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.

[参考译文] RTOS/EK-TM4C123GXL:定义的中断。 第17号

Guru**** 2595935 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/737597/rtos-ek-tm4c123gxl-defined-interrrupt-17

器件型号:EK-TM4C123GXL
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

尊敬的 TI 支持团队:

 我不熟悉 TI - RTOS。 配置硬件中断时。 我将获得的控制台日志  

已定义:INTR#17
TI.SYSBIOS.family.ARM.m3/Hwi:第143行:

将代码刷写到电路板中。

我只通过静态配置定义了一次中断。 在这里、我要附加相同的屏幕截图。

 请帮助解决此问题。

谢谢、此致、

Yashwanth Kumar。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    控制台输出似乎由于某种原因被截断。 它应该为"E_alreadyDefined:Hwi 已定义:INTR# 17"。 这意味着 Hwi 已配置为使用。

    它连接到什么外设?

    这是每次加载和运行应用程序时发生的还是仅在重新启动后发生的?

    是否有 Hwi_create (17、...) 运行时代码中的代码? 如果你静态地定义 Hwi、这是不必要的。

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

    感谢你的答复。

    它连接到什么外设?
    我尝试将其用于 LaunchPad 的按钮中断。

    2.这是每次加载和运行应用程序时发生的还是仅在重新启动后发生的?
    是的、每次我加载和运行应用程序时都会发生这种情况。

    是否有 Hwi_create (17、...) 运行时代码中的代码?
    否、仅在 app.cfg 文件中。


    在"EK_TM4C123GXL.c"文件中使用的引脚配置:

    GPIO_PinConfig gpioPinConfigs[]={
    /*输入引脚*/
    /* EK_TM4C123GXL_GPIO_SW1 */
    GPIOTIVA_PB_0 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、
    /* EK_TM4C123GXL_GPIO_SW2 *
    GPIOTIVA_PB_1 | GPIO_CFG_IN_pu | GPIO_CFG_IN_INT_RISING、

    /*输出引脚*/
    /* EK_TM4C123GXL_LED_RED */
    GPIOTIVA_PF_1 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、
    /* EK_TM4C123GXL_LED_BLUE */
    GPIOTIVA_PF_2 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW、
    /* EK_TM4C123GXL_LED_GREEN */
    GPIOTIVA_PF_3 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW
    };

    我正在使用以下代码来捕获中断。
    函数声明:

    extern "C"(我正在将 C++用于我的项目)

    void upButton _ISR();


    功能定义:

    void upButton_ISR(){

    uint32_t HWI_MASK =(GPIOIntStatus (GPIO_PORTB_BASE、1));

    //查找连接的 GPIO 引脚
    GPIOIntClear (GPIO_PORTB_BASE、HWI_MASK);

    if (HWI_MASK & GPIO_PIN_0){
    GPIO_TOGGLE (Board_LED_BLUE);


    if (HWI_MASK & GPIO_PIN_1){
    GPIO_TOGGLE (Board_LED_GREEN);




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

    Yashwanth、

    1) 1) GPIO 驱动程序将在内部创建所需的 Hwi。 这就是您获取已定义错误的原因。

    2) 2)您需要将 GPIO 中断回调添加到 goioCallbackFunctions 数组中、如下所示:

    /*
    === gpioCallbackFunctions ===
    *回调函数指针数数数组
    *
    /
    extern void mySw1Callback (uint_least8_t index);
    extern void mySw2Callback (uint_least8_t index);
    
    GPIO_CallbackFxn gpioCallbackFunctions[]={
    /* Board_GPIO0 */
    mySw1回调、
    /* Board_GPIO1 */
    mySw2Callback、
    };
    
    

    3) 3)回调不需要清除中断、因为这是在调用回调之前由 GPIO 驱动程序在内部完成的。

    4) 4)在您的应用中使用 GPIO_enableInt (0)和 GPIO_enableInt (1)来启用与您的两个回调相关联的中断。

    5) 5)除非您绝对需要、否则请勿使用本机 GPIO driverlib 调用。 GPIO 驱动程序用于管理引脚的状态。 如果您直接调用 driverlib API、GPIO 驱动程序可能会与它管理的 GPIO 引脚的当前状态不一致。

    Alan

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

    非常感谢您对问题的清晰解释。

    您能帮助我如何使用静态 TI-RTOS 配置为 HWI 配置 SW1 (板按钮)吗?

    我想将端口 B 引脚0用于 SW1。 根据数据表,GPIO 端口 B 的中断号为17。 因此、我尝试按照上面的屏幕截图进行配置(静态方式配置 RTOS)。

    请在该路径中指导我。

    此致、
    Yashwanth。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很困惑。 如果您使用的是 GPIO 驱动程序、则不应在配置文件中静态配置 Hwi。

    您显示的"EK_TM4C123GXL.c"板级配置文件内容对于管理 PB0和 PB1的 GPIO 驱动程序而言看起来是正确的。 您只需添加我刚才提到的中断回调。

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

    这是否得到了解决?

    Todd