FreeRTOS中的任务和多线程的概念差不多,但是任务的本质是把时间片无限的切小,小到人分辨不出来,其实还是一个时间只能运行一个任务,这是和多线程的根本区别。
FreeRTOS中的任务有几种运行态:

如果我正在运行A任务,但是B任务起来的时候我需要把A任务挂起,等B任务结束A任务继续运行,不能冲突。下面是demo。
首先运行一个主程序,开启一个任务,里面再开启两个任务
extern xTaskHandle dTask_Handler;//定义任务句柄
extern xTaskHandle cTask_Handler;
static void democode_thread2(void *param)
{
xTaskCreate(democode_thread, ((const char*)"socket_service_thread"), 1024, NULL, tskIDLE_PRIORITY + 1, (TaskHandle_t*)&dTask_Handler);
xTaskCreate(democode_thread1, ((const char*)"socket_service_thread1"), 1024, NULL, tskIDLE_PRIORITY + 1, (TaskHandle_t*)&cTask_Handler);
eTaskGetState(dTask_Handler);//查询任务状态
eTaskGetState(cTask_Handler);
vTaskDelete(NULL);
}
void demo2()
{
if(xTaskCreate(democode_thread2, ((const char*)"socket_service_thread1"), 1024, NULL, \
ts

本文深入探讨了FreeRTOS中任务的运行机制与调度原理,通过具体示例展示了如何创建、挂起及恢复任务,适用于解决多任务并发冲突的场景。
最低0.47元/天 解锁文章
2960

被折叠的 条评论
为什么被折叠?



