我有一些代码在从 RAM 运行时工作良好、但在尝试从闪存构建时不工作。 我使用 CLA。 根据我在线阅读的内容、链接器命令文件看起来是正确的。 这两个 CLA 任务触发一次、然后再也不会触发。
代码启动、大致如下:
EALLOW
device_init();
interrupt_initModule();
interrupt_initVectorTable();
setupADCs();
setupGPIO();
setupPWM();
setupCLA();
interrupt_register (INT_CLA1_1、&ISR_cla1_Task1);
interrupt_register (INT_CLA1_2、&ISR_cla1_task2);
ADC_setInterruptSource (ADCC_BASE、ADC_INT_NUMBER1、ADC_SOC_NUMBER1);
ADC_clearInterruptStatus (ADCC_BASE、ADC_INT_NUMBER1);
ADC_enableInterrupt (ADCC_BASE、ADC_INT_NUMBER1);
calcOffsetsADC();
EDIS;
ADC_enableInterrupt (ADCC_BASE、ADC_INT_NUMBER1)
INTERRUPT_ENABLE (INT_CLA1_1);
ePWM_clearEventTriggerInterruptFlag (EPWM2_base);
INTERRUPT_ENABLE (INT_CLA1_2);
EINT;
while (1);
CLA 任务1由 ADCC 中断1触发
CLA 任务2由 EPWM2触发
CLA 中断 ISR 是
_interrupt void ISR_cla1_Task1 (void)
{
ADC_clearInterruptStatus (ADCC_BASE、ADC_INT_NUMBER1);
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group11);
//
//检查是否发生了溢出
//
if (TRUE =ADC_getInterruptOverflowStatus (ADCC_BASE、ADC_INT_NUMBER1))
{
ADC_clearInterruptOverflowStatus (ADCC_BASE、ADC_INT_NUMBER1);
ADC_clearInterruptStatus (ADCC_BASE、ADC_INT_NUMBER1);
}
返回;
}
_interrupt void ISR_cla1_task2 (void)
{
ePWM_clearEventTriggerInterruptFlag (EPWM2_base);
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group11);
返回;
}
我看到两个 CLA 任务都运行一次。 我对接下来要了解的内容有点不了解。 有什么建议吗?