目录
什么是RTOS?FreeRTOS是什么?它主要应用于哪些领域?
如何使用FreeRTOS的延时函数vTaskDelay()?
什么是“软件定时器”?如何在FreeRTOS中使用软件定时器?
什么是“互斥量”(Mutex)?在FreeRTOS中如何使用?
事件标志组(Event Groups)的作用是什么?如何使用?
在FreeRTOS中,如何从ISR中安全地向任务发送信号或数据?
FreeRTOS 中如何实现任务的延时机制?
在 FreeRTOS 中,任务延时机制主要通过以下方式实现:
- 相对延时函数
- FreeRTOS 提供了相对延时函数 vTaskDelay ()。该函数的参数是一个以系统节拍数为单位的延时时间。当任务调用 vTaskDelay () 时,它会将自身置于阻塞态,放弃 CPU 使用权,等待指定的系统节拍数过去后,再由就绪态进入运行态继续执行后续代码。例如,如果系统节拍频率为 1000Hz,调用 vTaskDelay (1000) ,则任务会阻塞 1 秒钟。这种相对延时方式简单直观,适用于大多数不需要精确延时的场景,比如让一个任务周期性地执行某些操作,通过设置合适的延时时间来控制任务的执行周期。
- 绝对延时函数
- 除了相对延时函数,FreeRTOS 还提供了