FreeRTOS API使用栗子
二值信号量
- 创建句柄
- 创建信号量
- 等待获取信号量
- 释放信号量
SemaphoreHandle_t BinaryStartSemaphore; //创建二值信号量句柄
BinaryStartSemaphore = xSemaphoreCreateBinary();//创建信号量
void Control_Task(void)
{
while(1)
{
if(条件)
xSemaphoreGive(BinaryStartSemaphore);//释放信号量
}
}
void task01(void)
{
while(1)
{
xSemaphoreTake(BinaryStartSemaphore,portMAX_DELAY); //获取开始信号量
/*do something*/
}
}
软件定时器:
#define NUM_TIMERS 1//同时定义多个
TimerHandle_t xTimers_Handle[ NUM_TIMERS ]; //创建软件定时器句柄
xTimers_Handle[0] = xTimerCreate((const char* )"xTimer0",//创建软件定时器
(TickType_t )1000,//定时时间,1000个时钟周期
(UBaseType_t )pdTRUE,//周期触发
( void * )0,
(TimerCallbackFunction_t)TreatTime_Count);//回调函数
if(条件)
{
xTimerStart(xTimers_Handle[0],0); //开启周期定时器,治疗时间到计数
}
if(条件)
{
xTimerStop(xTimers_Handle[0],0); //关闭单次定时器,关闭治疗时间到计数
}
void TreatTime_Count(void *pvParameters)
{
//do something...
}