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/TMDXRM42HDK:中断

Guru**** 2465700 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/662368/ccs-tmdxrm42hdk-interrupt

器件型号:TMDXRM42HDK

工具/软件:Code Composer Studio

我在 main()中为时钟信号运行 while 循环。 但是,当我按下 S1 (GIOA7)时,我想进入一个具有短串行输出的中断例程。 当处理器始终处于 while 循环中时、我不知道如何实现这一点。 如何跳入 ISR 并返回到 while 时钟循环?

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

    Marcel、您好!

    您可以启用 GIO 中断。 请使用 HALCoGen 生成项目并将该项目导入 CCS

    1.打开 HALCoGen 项目

    2.选中"驱动程序启用"下的"启用 GIO 驱动程序"

    3.检查"PINMUX"下的 GIOA

    4. 检查"VIM 通道0-31"下的 VIM 通道9 (GIO 内部 A)

    5. 单击"GIO"选项卡,选中启用 pf 位7.

    6.保存项目并生成代码

    这是生成的 GIO ISR

    /**@fn void gioHighLevelInterrupt (void)
    *@GIO 中断处理程序简介
    *
    *用于 GIO 引脚中断的高级中断处理程序
    *
    *
    #pragma CODE_STATE (gioHighLevelInterrupt、32)
    #pragma INTERRUPT (gioHighLevelInterrupt、IRQ)

    /* sourceId:gio_sourceId_011 */
    /* DesignId:GIO_DesignId_011 */
    /*要求:HL_SR35、HL_SR36 */
    void gioHighLevelInterrupt (void)

    uint32 offset = gioREG->OFF1;

    /*用户代码开始(14)*/
    /*用户代码结束*/

    if (偏移!= 0U)

    偏移=偏移- 1U;
    gioNotification (gioPORTA、偏移量);


    /*用户代码开始(15)*/
    /*用户代码结束*/

    8.在 gioNotification (../)中添加代码 功能

    #pragma weak (gioNotification)
    void gioNotification (gioPORT_t *端口、uint32位)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(19)*/

      在此处添加您的代码


    /*用户代码结束*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最简单的方法是在 GIOA7上启用中断。 该中断将导致程序执行分支到中断服务例程(ISR)。 在 GPIO 中断的 ISR 期间、您可以在 SCI 上发送数据。

    可以使用 Halcogen 来配置中断。 您可以选择选择 gioLowLevelInterrupt (VIM 通道23)或 gioHighLevelInterrupt (VIM 通道09)。 通过关闭相关通道框之间的连接、可以在相应的选项卡(VIM 通道0-31、VIM 通道32-63等)下启用中断分配。

    您还需要在 GIO 配置选项卡下启用 GPIOA7中断、方法是选择启用和高或低优先级。

    这将生成在触发中断时将调用的通知函数。 您需要使用 #pragma 语句将此函数定义为中断。

    在 Halcogen 示例中可以找到一些有关如何执行此操作的示例、即使它们不是 GPIO 中断、该过程也是类似的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、好的、明白这一点。 谢谢你。 但是、在调用 while 循环之前、我必须在 main 中调用什么来实现中断? BR
    Marcel