回复于:\rv32m1_vega\driver_examples\gpio\input_interrupt 仿照这么这个例子改为其他按键,例如SW3,一直不行?

Home 论坛 开发和更新问题 \rv32m1_vega\driver_examples\gpio\input_interrupt 仿照这么这个例子改为其他按键,例如SW3,一直不行? 回复于:\rv32m1_vega\driver_examples\gpio\input_interrupt 仿照这么这个例子改为其他按键,例如SW3,一直不行?

#1940
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做对应修改