This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS:GPIO 测试程序中的 GPIO 回调失败

Guru**** 2595800 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/965441/ccs-gpio-callback-failed-in-gpio-test-program

工具/软件: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 <<引脚编号);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hanq Kou、

    我叫 Andrew、我很乐意为您提供帮助。  虽然我目前没有为您提供答案、但我发布此帖子是为了让您知道我收到了您的问题、我正在研究答案。  我还将与语言专家联系、他们在 AM335x 方面具有更专业的经验、也会提供他们的意见。  我希望下周某个时候能为您提供解决方案、但这可能会由于我同事的假日安排而延迟、因此如果此估计值发生变化、我将向您更新。

    此致、

    Andrew Shutzberg   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hanq Kou、

    我只是想让大家知道我仍在研究这个问题、并将尽快为您解答。

    -Andrew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andrew:

    很抱歉,我解决了问题,忘记在 e2e 论坛中发帖。

    在回调函数中,我使用了 printf(),导致数据中止。 workmate 告诉我、不允许在回调函数中使用 printf。

    然后我删除了该行,它运行良好。

    感谢您的工作。

    -Hanq

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您让我了解 Hanq、很高兴它能为您提供帮助!