您好!
在我的项目中、我有一个周期性的 ADC 中断会触发两个 任务:CPU1任务和 CLA1任务。 函数如下所示:
__interrupt void INT_myADC0_1_ISR()
{
// Cla1Task1() is triggered in the background
// Clearing interrupt:
ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);
Interrupt_clearACKGroup(INT_myADC0_1_INTERRUPT_ACK_GROUP);
// Pulse LED before and after CPU1_task():
Pulse_LED();
CPU1_task();
Pulse_LED();
}
__interrupt void cla1Isr1()
{
// CLearing interrupt:
Interrupt_clearACKGroup(INT_myCLA01_INTERRUPT_ACK_GROUP);
// Pulse LED twice in a row to detect end of Cla1Task1():
Pulse_LED();
Pulse_LED();
}
CPU1_TASK()比 Cla1Task1()长得多,但当我查看 LED 信号时,指示 Cla1Task1()结束的两个脉冲总是在 CPU1_Task1()之后发生。
我不是从 ADC 中断自动触发 Cla1Task1 (),而是在我调用 cpu1_task ()之前,我还在显式地尝试使用 cla_forceTasks ( cla1_base , cla_taskfloag_1 ),但我得到了相同的结果。
它看起来像 Cla1Task1()在 INT_myADC0_1_ISR() 函数结束之前不会被执行。 我还尝试了禁用编译器优化、但没有区别(执行 Taks 需要更长的时间、但 CLA 任务在 CPU 任务之后仍在执行)。 这是否会成为优先级问题?
谢谢!