工具与软件:
大家好!
我有一块 J721e_EVM 板。 我正在使用"ti-processor-sdk-rtos-j721e-evm-09_02_00_05"。 我尝试触发来自外部源(如按钮)的 GPIO 中断。 我将使用 mc2_1内核以及 PDK 的 GPIO 示例:main_led_blink.c 我已经成功地从 WKUP 域 GPIO 触发了中断、但使用主域时、中断无效。 在我的示例中、我尝试使用 GPIO0_71。 我可以成功地将此引脚用作输出、但到目前为止不能用作中断输入。 下面是我的代码的相关部分:
pinmux_data:
/* MyGPIO0 -> GPIO0_71 -> AA28 */
{
PIN_PRG0_PRU1_GPO8, PIN_MODE(7) | \
((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
},gpio_board.c:
/* GPIO Driver board specific pin configuration structure */
GPIO_PinConfig gpioPinConfigs[] =
{
GPIO_DEVICE_CONFIG(1, 71) | GPIO_CFG_IN_INT_RISING | GPIO_CFG_INPUT,
};
/* GPIO Driver call back functions */
GPIO_CallbackFxn gpioCallbackFunctions[] =
{
NULL
};
/* GPIO Driver configuration structure */
GPIO_v0_Config GPIO_v0_config =
{
gpioPinConfigs,
gpioCallbackFunctions,
sizeof(gpioPinConfigs) / sizeof(GPIO_PinConfig),
sizeof(gpioCallbackFunctions) / sizeof(GPIO_CallbackFxn),
0x8Umain_led_blink.c
volatile uint32_t main_gpio_intr_triggered = 0;
static void Board_initGPIO(void)
{
Board_initCfg boardCfg;
GPIO_v0_HwAttrs gpio_cfg;
boardCfg = BOARD_INIT_PINMUX_CONFIG |
BOARD_INIT_MODULE_CLOCK |
BOARD_INIT_UART_STDIO;
Board_init(boardCfg);
GPIO_socGetInitCfg(1, &gpio_cfg);
gpio_cfg.baseAddr = CSL_GPIO0_BASE;
(gpio_cfg.intCfg[71]).intcMuxNum = INVALID_INTC_MUX_NUM;
(gpio_cfg.intCfg[71]).intcMuxInEvent = 0;
(gpio_cfg.intCfg[71]).intcMuxOutEvent = 0;
GPIO_socSetInitCfg(1, &gpio_cfg);
}
void AppMainGpioCallbackFxn(void)
{
main_gpio_intr_triggered = 1;
GPIO_clearInt(0);
}
#if defined (RTOS_ENV)
void gpio_test(void* arg0, void* arg1)
{
#else
int main()
{
Board_initGPIO();
#endif
// GPIO initialization
GPIO_init();
// Set the callback function
GPIO_setCallback(0, AppMainGpioCallbackFxn);
// Enable GPIO interrupt on the specific gpio pin
GPIO_enableInt(0);
GPIO_clearInt(0);
GPIO_log("\n -------------LED blink application------------- \n");
UART_printStatus("\n Awaiting interrupt occurrence ...\n");
AppDelay(DELAY_VALUE);
while (main_gpio_intr_triggered == 0U);
UART_printStatus("\n Button has been pushed, and the interrupt has been captured!! \n");
while(1)
{
AppDelay(DELAY_VALUE);
}
}您能帮我解决什么问题吗?
感谢你的帮助






