|
楼主 |
发表于 2021-9-16 15:41:48
|
显示全部楼层
我的四个任务vTaskUserIF,vTaskLED,vTaskMsgPro,vTaskStart分别主动延时100ms,200ms,400ms,800ms,之前后3个任务都是LED灯闪烁,运行时间小于50us,现在在后面三个任务加了串口打印,任务运行状态如下:
task name task state priority remain stack task index
vTaskUserIF X 1 3918 1
IDLE R 0 119 5
vTaskMsgPro B 3 468 3
vTaskStart B 4 468 4
vTaskLED B 2 468 2
Tmr Svc B 2 233 6
task name run cnt use rate
vTaskUserIF 7558 <1%
IDLE 9098094 99%
vTaskStart 1713 <1%
vTaskLED 9124 <1%
vTaskMsgPro 4552 <1%
Tmr Svc 0 <1%
vTaskUserIF主动延时100ms,优先级为1,即优先级最低,运行次数小于主动延时200ms的vTaskLED,????
- /*
- *********************************************************************************************************
- * 函 数 名: vTaskTaskUserIF
- * 功能说明: 接口消息处理,这里用作 LED 闪烁
- * 形 参: pvParameters 是在创建该任务时传递的形参
- * 返 回 值: 无
- * 优 先 级: 1 (数值越小优先级越低,这个跟 uCOS 相反)
- *********************************************************************************************************
- */
- static void vTaskTaskUserIF(void *pvParameters)
- {
- uint32_t ucKeyCode;
- uint8_t pcWriteBuffer[500];
-
- while(1)
- {
- ucKeyCode=STM_EVAL_PBGetState(BUTTON_WAKEUP);
- if(ucKeyCode == 1)
- {
- printf("=================================================\r\n");
- printf("task name task state priority remain stack task index\r\n");
- vTaskList((char *)&pcWriteBuffer[0]);
- printf("%s\r\n", pcWriteBuffer);
-
- printf("\r\ntask name run cnt use rate\r\n");
- vTaskGetRunTimeStats((char *)&pcWriteBuffer[0]);
- printf("%s\r\n", pcWriteBuffer);
- }
- vTaskDelay(100);
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: vTaskMsgPro
- * 功能说明: 信息处理,这里是用作 LED 闪烁
- * 形 参: pvParameters 是在创建该任务时传递的形参
- * 返 回 值: 无
- * 优 先 级: 3
- *********************************************************************************************************
- */
- static void vTaskLED(void *pvParameters)
- {
- while(1)
- {
- STM_EVAL_LEDToggle(LED2);
- printf("aa");
- vTaskDelay(200);
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: vTaskMsgPro
- * 功能说明: 信息处理,这里是用作 LED 闪烁
- * 形 参: pvParameters 是在创建该任务时传递的形参
- * 返 回 值: 无
- * 优 先 级: 3
- *********************************************************************************************************
- */
- static void vTaskMsgPro(void *pvParameters)
- {
- while(1)
- {
- STM_EVAL_LEDToggle(LED3);
- printf("bb");
- vTaskDelay(400);
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: vTaskStart
- * 功能说明: 启动任务,也就是最高优先级任务,这里用作 LED 闪烁
- * 形 参: pvParameters 是在创建该任务时传递的形参
- * 返 回 值: 无
- * 优 先 级: 4
- *********************************************************************************************************
- */
- static void vTaskStart(void *pvParameters)
- {
- while(1)
- {
- STM_EVAL_LEDToggle(LED4);
- printf("cc");
- vTaskDelay(800);
- }
- }
复制代码 |
|