论坛回复已创建

正在查看 5 帖子:16-20 (共 60 个帖子)
  • 作者
    帖子
  • 回复道: 外部中断开启LED灯的例程 #1949
    HowardHoward
    参与者

    你就贴出部分代码,没办法帮过你查看。请检查BOARD_InitPins()里面管脚是不是配置正确,对应GPIO的clock是否enable。确保你的配置是对应你想要用的GPIO信号。因为你的宏定义有SW3,而初始化现实用的PORTB的第17管脚。

     

     

    回复道: RV32 VEGA有图形化配置工具吗 #1944
    HowardHoward
    参与者

    没有相应的图形化配置工具可用。建议移植前看看基本的文档,像memory map,interrupt/vector table, 启动模式等。

    回复道: 外部中断开启LED灯的例程 #1943
    HowardHoward
    参与者

    由于RISC-V中断只支持32个外部硬件中断信号,更多的中断信号是通过INTMUX模块来复用的。根据RV32M1的技术参考文档的3.4.3节的Table 3-23,可以看到GPIOB的中断信号是通过INTMUX来连接到RISC-V的。所以要初始化INTMUX这个模块。所以要在程序中添加INTMUX 驱动,即加入rv32m1_sdk_riscv\devices\RV32M1\drivers\fsl_intmux.c文件,然后在你的 .c文件中#include “fsl_intmux.h”,并且添加下面INTMUX初始化和中断配置代码:

    INTMUX_Init(INTMUX0);
    INTMUX_EnableInterrupt(INTMUX0, 0, PORTB_IRQn);

    HowardHoward
    参与者
    • GPIOE是 Rapid/Fast GPIO,还需要打开Rapid/Fast GPIO 的clock,所以在BOARD_InitPins()中要enable rgpio clock

    void BOARD_InitPins(void) {
    CLOCK_EnableClock(kCLOCK_PortA); /* Clock Gate Control: 0x01u */
    CLOCK_EnableClock(kCLOCK_PortC); /* Clock Gate Control: 0x01u */
    CLOCK_EnableClock(kCLOCK_PortE); /* Clock Gate Control: 0x01u */
    CLOCK_EnableClock(kCLOCK_Rgpio1);

    ……

    }

    • 由于RISC-V中断只支持32个外部硬件中断信号,所以更多的中断信号是通过INTMUX模块来复用的。所以要初始化INTMUX这个模块。所以要在程序中添加INTMUX 驱动,即加入rv32m1_sdk_riscv\devices\RV32M1\drivers\fsl_intmux.c文件,然后在gpio_input_interrupt.c文件中 #include “fsl_intmux.h”,并且在初始化GPIOE中断加入红色代码行

    /* Init input switch GPIO. */

    INTMUX_Init(INTMUX0);
    INTMUX_EnableInterrupt(INTMUX0, 0, PORTE_IRQn);

    PORT_SetPinInterruptConfig(BOARD_SW3_PORT, BOARD_SW3_GPIO_PIN, kPORT_InterruptFallingEdge);
    EnableIRQ(BOARD_SW3_IRQ);
    GPIO_PinInit(BOARD_SW3_GPIO, BOARD_SW3_GPIO_PIN, &sw_config);

    • 其它修改对照SW2做对应修改

     

    回复道: 申请织女星开发板 #1930
    HowardHoward
    参与者

    @cyril0313 加微信 iamhowardliu

正在查看 5 帖子:16-20 (共 60 个帖子)