freertos任务级临界代码保护
最近做项目过程中,调用播放tts语音接口播放语音时概率性出现语音播报卡顿问题,下面对此问题解决过程做个简单记录。
代码框架是一个语音播报任务,其他任务需要播报语音给此任务发送播报消息,收到播报消息后,播报对应消息的内容即可。
一.任务优先级
播报时卡顿,可能是因为播报过程中被其他任务打断造成的,所以从提高任务优先级方向考虑一下。
查看代码FreeRTOSConfig.h中configMAX_PRIORITIES值为任务优先级最大值(0~configMAX_PRIORITIES-1),查看其他任务的优先级别,将语音播报的优先级提高。
修改方法:
1.创建时增加其优先级
portBASE_TYPE xTaskCreate(pdTASK_CODE pvTaskCode,const portCHAR * const pcName,unsigned portSHORT usStackDepth,void *pvParameters,unsigned portBASE_TYPE uxPriority,xTaskHandle *pvCreatedTask);
参数 | 含义 |
---|---|
pvTaskCode | 指向任务的入口函数. 任务必须执行并且永不返回 (即:无限循环,一个句柄). |
pcName | 描述任务的名字。主要便于调试。最大长度由configMAX_TASK_NAME_LEN.定义 |
usStackDepth | <