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/TMS570LC4357:中断例程

Guru**** 2341440 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/604595/ccs-tms570lc4357-interrupt-routine

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

您好!

我知道当我按下一个用户按钮时、中断例程"gioNotification"出现。 (在 Halcogen 中配置)

问题是、我的主板有2个用户按钮。 但我想、每个按钮都有自己的中断例程。 函数 gioNotification 会独立地显示哪个按钮被按下。

谢谢

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

    我不建议您修改 Gio.c 中的中断服务例程 您可以在 gioNotification()中为来自用户 button1和用户 button2的中断添加2 if()循环。

    如果 offset= 0x08 (GIOB4)、它来自 UserButton A、如果 offset=0x10 (GIOB5)、则中断来自 UserButton B

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

    我不解释、offset= 0x08意味着什么? 您能不能编写一个小代码、这样我就可以跟踪您了。
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    GIOOFF1和 GIOOFF2寄存 器提供一个数字偏移值、该偏移值代表挂起的具有高优先级和低优先级的外部中断。 偏移值可用于在应用软件的矢量表中定位中断例程的位置。

    GIO 中断服务例程使用此值作为 gioNotification(. )。  

    void gioHighLevelInterrupt (void)

    uint32 offset = gioREG->OFF1;

    if (偏移!= 0U)

    偏移=偏移- 1U;
    IF (偏移>= 8U)

      gioNotification (gioPORTB、偏移- 8U)

    其他

      gioNotification (gioPORTA、偏移量);

    在 notification.c 中,gioNotification 的参数(.,.) 已更改为“*端口”和“位”:

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

    此致、

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

    但是在哪里可以找到 gioHighLevelInterrupt 这个 fcn 呢? 我必须自己实施吗?

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

    您好,

    以下是在 HALCoGen 中生成此代码的过程:

    1.启用驱动程序:选中"Enable GIO Driver"(启用 GIO 驱动程序)

    2. 配置矢量中断模块通道(VIM):

    1. 将 VIM 通道9映射到 GIO 高电平中断
    2. 启用 VIM 通道9
    3. 将 VIM 通道9映射到 IRQ

    3. 保存项目并生成代码。 中断服务例程将生成并放置在 Gio.c 中

    此致、

    问  

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

    void gioNotification (gioPORT_t *端口、uint32位)

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

    switch (bit){

    情况0x08:I = 1;break;
    情况0x10:I = 0;中断;



    /*用户代码结束*/


    例如、这不起作用。 我可以做什么

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

    将代码更改为:

    情况0x05:I = 1;中断;//从 GIOB[4]中断;GIOB[0]为1、GIOB[1]为2、 (笑声)

    情况0x06:I = 0;中断;//从 GIOB[5]中断