工具/软件:Code Composer Studio
我使用的是 pdk_am335x_1_0_14。
我尝试了 ti\pdk_am335x_1_0_14\packages/ti\drv\gpio\test\led_blink 测试程序。我无法按预期通过回调使 LED 闪烁。
这是我的(稍微更改了一下)代码。
int main()
{
Board_initGPIO();
uint32_t TestOutput = 1;
/* GPIO 初始化*/
GPIO_init();
//ifdef 工作后的样子。
/*设置回调函数*/
GPIO_setCallback (GNSS_EXINT、AppGpioCallbackFxn);
//我尝试在 AppGpioCallbackFxn()中添加一些 printd 消息,但发现它从未被回调。
/*在特定 GPIO 引脚上启用 GPIO 中断*/
GPIO_enableInt (GNSS_EXINT);
/*将高电平写入 GPIO 引脚以控制 LED1 */
GPIO_WRITE ((SYS_STATUS_LED)、GPIO_PIN_VAL_HIGH);
AppDelay (delay_value);
GPIO_log ("\n GPIO LED 闪烁应用程序\n");
while (1)
{
gpioBaseAddr = GPIO_Group3_base_ADDR;
gpioPin = GPIO_GNS_EXINT_PIN_NUM;
//在以前的头文件中定义
/*触发中断*/
GPIOTriggerPinInt (gpioBaseAddr、0、gpioPin);
//在这一行代码中,我应该看到 LED 亮起并熄灭,对吧?
//但它只是保持打开,因为我之前在这个引脚上写了一条高电平的线。
AppDelay (delay_value);
IF (测试输出)
{
GPIO_log ("\n 所有测试都通过了\n");
TestOutput = 0;
}
}
}
我在 e2e 论坛中搜索并找到了这个。 但我不知道我是否遇到了与他相同的错误。
e2e.ti.com/.../568038
我认为我错误地使用了此 API、但无法判断错误的位置。
void GPIOTriggerPinInt (uint32_t baseAdd、
uint32_t intLine、
uint32_t 引脚编号)
{
IF (GPIO_INT_LINE_1 = intLine)
{
HW_WR_REG32 (baseADD + GPIO_IRQSTATUS_RAW_0、(uint32_t) 1 <<引脚编号);
}
其他
{
HW_WR_REG32 (baseADD + GPIO_IRQSTATUS_RAW_1、(uint32_t) 1 <<引脚编号);
}
}