问FreeRTOS里面一点C语言用法的问题

2019-07-20 05:26发布

本帖最后由 赤诚 于 2018-10-30 12:18 编辑

void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION;
如上函数定义,函数名后面为什么加了一个之前宏定义过的关键词PRIVILEGED_FUNCTION?搞不懂呀,谢谢大佬们。
还有一个问题就是创建两个任务后,其中一个任务死循环,整个程序就卡了,除非在那个死循环的函数里面添加vTaskDelay()函数。如下程序
void task1_task(void * pvParameters)
{
  while(1)
        {
           LED0=~LED0;
           vTaskDelay(500);
        }
}


void task2_task(void * pvParameters)
{
  while(1)
        {
           vTaskDelay(500);//后来添加的Delay函数
        }
}


这是为什么呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
赤诚
2019-07-20 12:51
为人很低调 发表于 2018-10-30 16:26
第一个,我没用freeRTOS,没法回答。
第二个,因为死循环的话这个task就一直占用CPU,当然就卡了。delay才 ...

我按你的启发,吧Task1优先级提高的确也不会卡程序了。说明你是对的。那我这样子理解:1,优先级高的任务可以抢正在执行的低优先级的任务CPU资源。
2,只有更高优先级的任务执行完了,或者有类似vTaskDelay();这种函数来释放CPU,低优先级才有被执行的可能。这样对不对呢?大佬是不是用UCOS 呢?谢谢大佬:D

一周热门 更多>