请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:F29H85X-EVM SOM 工具与软件:
我将 使用 FreeRTOS 将在 F28374D 上的裸机上开发的代码移植到 F29H85x。 我在执行由中断驱动的通知同步的任务时遇到一些问题。
我有3个任务、其中一个由 Timer1同步、它每1ms 发送一个通知以取消阻止"主"任务、另外一个由 PWM 中断每20ms 通知一次、还有一个 由 UART RX 中断通知。 我遇到了两种异常行为:
-
在代码执行几分钟后、由 Timer1同步的任务应该每1ms 启动一次"main"任务、冻结、保持非活动状态大约60秒、然后重新启动、或
-
任务继续运行、但是它不是每1ms 执行一次、而是每10/12ms 执行一次。。。 它几乎似乎 CPU "过载"。中断和任务优先级为:
timer1_INT优先事项40.uart0_INT优先250EPWM0_ET_INT优先事项30.timer2_INT优先级255 (由 FreeRTOS 使用)- FreeRTOS
ZCD_TASK优先级5 (静态、堆栈大小512) - FreeRTOS
MAIN_TASK优先级5 (静态、堆栈大小1024) - FreeRTOS
UART_DBG_TASK优先级4 (静态、堆栈大小512)
-
如果我没有执行来自 ISR 的通知、而是使用 vTaskDelay 从 RTOS 执行"主"任务、并且仍然是从主任务中的任务、在需要执行时通知20ms 任务;在本例中、一切都正常运行。
有什么想法或建议吗?
谢谢