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.
工具/软件: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。