我参考了main_led_blink.c里面关于GPIO相关的代码,但是我的GPIO中断还是不能成功运行。我的代码如下:
//配置GPIO0_99(W23)作为中断
typedef enum {
ENUM_TEST_GPIO_INT_FUN_W23 = 0,
}GPIO_CTL;
GPIO_PinConfig gpioPinConfigs[] =
{
GPIO_DEVICE_CONFIG(0, 99) | GPIO_CFG_IN_INT_BOTH_EDGES | GPIO_CFG_INPUT,
};
GPIO_CallbackFxn gpioCallbackFunctions[] =
{
NULL,
};
GPIO_v0_Config GPIO_v0_config =
{
gpioPinConfigs,
gpioCallbackFunctions,
sizeof(gpioPinConfigs) / sizeof(GPIO_PinConfig),
sizeof(gpioCallbackFunctions) / sizeof(GPIO_CallbackFxn),
0x8U
};
app_init()
{
boardCfg = BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO | BOARD_INIT_MODULE_CLOCK;
Board_init(boardCfg);
int pinNum = 99;
int bankNum = pinNum/16; //bankNum=99/16 不知道这样计算是否正确?
GPIO_v0_HwAttrs gpio_cfg;
GPIO_socGetInitCfg(bankNum, &gpio_cfg); //这里的idx使用bankNum变量,是否正确?
gpio_cfg.baseAddr = CSL_GPIO6_BASE; //这里的CSL_GPIO6_BASE 来源 bankNum=0 对应的值
gpio_cfg.intCfg[pinNum].intNum = 256 + bankNum; //这里的256参考其他源码里面的值?不知道为什么这里要设置为256
gpio_cfg.intCfg[pinNum].intcMuxNum = INVALID_INTC_MUX_NUM; //参考main_led_blink.c配置
gpio_cfg.intCfg[pinNum].intcMuxInEvent = 0; //参考main_led_blink.c配置
gpio_cfg.intCfg[pinNum].intcMuxOutEvent = 0; //参考main_led_blink.c配置
GPIO_socSetInitCfg(bankNum, &gpio_cfg); //这里的idx使用bankNum变量,是否正确?
GPIO_init();
GPIO_setCallback(ENUM_TEST_GPIO_INT_FUN_W23, AppGpioCallbackFxn_W23);
GPIO_enableInt(ENUM_TEST_GPIO_INT_FUN_W23);
}
请问我的配置哪里有问题?