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.

[参考译文] 编译器/TMS320F28379D:USER_ISR 和 mainISR 函数之间的区别是什么

Guru**** 2195940 points
Other Parts Discussed in Thread: MOTORWARE, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/942074/compiler-tms320f28379d-what-is-the-difference-between-user_isr-and-mainisr-functions

器件型号:TMS320F28379D
主题中讨论的其他器件:MOTORWAREC2000WARE

工具/软件:TI C/C++编译器

您好!

  当我浏览示例代码 时,看到  motorware 示例中的"mainISR"函数和 C2000ware Default ISR 文件中的"User1_ISR"。 它们之间有何差异?

何时何地 使用?

提前感谢。

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

    您好 Rani、

    两者都只是中断函数名称。 您可以将这些函数名称重命名为任意名称。  

    供参考。 MotorWare 软件包适用于具有 F2802x/05x/06x 的 InstaSPIN-FOC/Motion 解决方案。 如果您要使用 F2837x 设计电机应用、请参阅 MotorControl SDK。 您还可以在 C2000Ware 中找到适用于 C2000外设的许多示例。

    此致、

    Steve   

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

    您好、Steve、

      这两个中断都是中断、但实现过程也会发生变化。

     主 ISR

    ifdef 闪存
    #pragma CODE_SECTION (mainISR、"ramfuncs");
    #endif
    ifdef 闪存
    //用于在闪存中运行后台,在 RAM 中运行 ISR
    extern uint16_t * RamfuncsLoadStart、* RamfuncsLoadEnd、* RamfuncsRunStart;
     Memcopy ((uint16_t *)&RamfuncsLoadStart、(uint16_t *)&RamfuncsLoadEnd、(uint16_t *)&RamfuncsRunStart);



    User1_ISR

     interrupt_register (INT_User1、&User1_ISR);


       //
           //启用此示例所需的中断
           //
       INTERRUPT_ENABLE (INT_User1);
       //引发用户中断的代码:

        _asm (" trap #20");   //这将引起 User1中断。 20是向量 id

    那么,Trap 是最高优先级的中断(软件中断),当我们调用__asm (TRAP_20)时,它发生,函数正在工作 。 主 ISR 发生 中断时,该怎么办 ? 以及如何实现? 我们何时会转到 mainISR?

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

    Rani、

    mainISR()是 ADC 中断的回调函数。 通过调用下面的 HAL_initIntVectorTable(),将 mainISR()分配给 ADCINT1中断矢量表。 在 MotorWare 中、ePWM 在计数器0处触发 ADC SOC。 换言之、在每个零计数器处、ADC 自动启动转换并在转换结束时生成 ADCINT。 您可以在 InstaSPIN-FOC 和运动用户指南(SPRUHJ1)第8章和第9章中查看更多详细信息。

    ///------------------------------------

    静态内联 void HAL_initIntVectorTable (HAL_Handle handle)

      HAL_Obj * obj =(HAL_Obj *)句柄;
      PIE_Obj * PIE =(PIE_Obj *) obj->压 电式;

      ENABLE_PROTECTED 寄存器_WRITE_MODE;

      PIe->ADCINT1 = mainISR;

      disable_protected_register_write_mode;

      返回;
    }// HAL_initIntVectorTable()函数结束

    ///------------------------------------

    此致、

    Steve

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

    非常感谢 Steve Lim。 我现在已经了解了 mainISR。