复习FREE_RTOS

时间片长度通过FreeRTOSConfig.h中的congfigTICK_RATE_HZ定义,比如congfigTICK_RATE_HZ设为100HZ,那么时间片长度就是10ms;

portTICK_RATE_MS用毫秒作为单位时间数值,实际上也是基于congfigTICK_RATE_H;

只有FROM_ISR结尾的函数才可以用在中断中;

 

需要注意的一点是,在原生的 FreeRTOS 中,信号量的发送和获取在 ISR 中要使用以 FromISR 结尾

 

的特定函数。在 STM32Cube 生成的代码中,ST 的工程师已经把接口进行了统一,在相应的函数中,

 

通过查询程序状态寄存器判断当前是在 ISR 中还是在普通函数中。所以用户在使用时,统一使用

 

osSemaphoreWait()和 osSemaphoreRelease()函数操作即可。同样的,FreeRTOS 的其他通信方式如队列、

 

互斥量等,都进行了这样的处理。

 

 

错误:今天建立任务的时候没有留意任务的优先级别,结果系统默认给的是最低级的优先级,结果把任务饿死了,任务根本得不到执行,找了好长时间的原因才反应过来,原来是优先级设置错误;

posted @ 2021-02-22 22:44  braveheart007  阅读(113)  评论(0编辑  收藏  举报