主机环境:Windows
开发环境:MDK4.7.2
FreeRTOS版本:FreeRTOS8.1.2
目标环境:STM32F030C8T6
FreeRTOS的任务有以下几种状态:运行态、就绪态、阻塞态、挂起态,如下图
其中如果任务调用了延时函数就会进入阻塞态,延时函数有两个:vTaskDelay()和vTaskDelayUtil()前者是相对延时,后者是绝对延时,可以查看Using the FreeRTOS Real Time Kernel - a Practical Guide文档来帮助理解。先来了解一下vTaskDelay()函数吧,代码如下
void vTaskDelay( const TickType_t xTicksToDelay )
{
TickType_t xTimeToWake;
BaseType_t xAlreadyYielded =