【发布时间】:2019-11-02 20:03:02
【问题描述】:
FreeRTOS 优先级 1 很特殊?
在我的系统中,我有 6 个优先级 0-5。我认识 0 点的空闲专业人士。
我在 1 分配一个任务,其他在 2-5 分配。从 cpu 时间和 IDEL pro 信息,我可以知道 cpu 有足够的时间来完成所有任务。
我发现一个问题,1的任务不能在正确的时间工作,频率是10Hz,但我发现有时它不能工作。可能是 8 或低于 10,甚至低于 1Hz。
当我将任务设置为 2 时,没关系,以 10Hz 工作。
代码结构如下:
void SYS_MONITOR::run(){
int ret = 0;
while(1){
vTaskDelayUntil(&last_wake_time, SYS_MONITOR_RUN_INTERVAL_MS/portTICK_RATE_MS);
dosomething....
}
ID State Prio Mark CPU(%) Name
1 S 1 261 0.0000000 God
2 R 0 109 69.6136779 IDLE
3 S 5 470 3.9053585 Tmr Svc
...
...
44 B 2 179 0.0242588 SYS_MONITOR_run
Heap : Total 491520 , Used 193696 , Remain 297824
DmaHeap: Total 16384 , Used 2048 , Remain 14336
【问题讨论】:
标签: c scheduled-tasks stm32 freertos