> 文章列表 > 【FreeRTOS学习 - 一些细节与踩坑记录】

【FreeRTOS学习 - 一些细节与踩坑记录】

【FreeRTOS学习 - 一些细节与踩坑记录】

跟着韦东山老师FreeRTOS教学资料的学习记录

FreeRTOS全部项目代码链接(更新中)

https://gitee.com/chenshao777/free-rtos_-study


一些细节与常用技巧
1. 串口接收大量数据时,可以接收完一帧数据后, 再给出二值信号量,唤醒等待获取信号量的任务,再在任务中进行数据处理;

2. 串口接收大量数据时,也可以使用消息队列
数据帧判断和处理在任务中进行,消息队列要设置的大一些,防止满了而丢失数据;

3. 中断函数里使用FreeRTOS的函数操作时
要将NVIC的抢占优先级设置成>=configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY,这个值一般是 5,
子优先级设置为 0。
在main函数里初始化NVIC:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

避坑!
1. 串口中断里不要加 printf!
不然会导致大量数据收不到,因为printf会占用比较多的资源;而且在中断函数里调用printf相当于中断嵌套中断,可能导致程序卡死
具体原因后面学习到了再回来更新!!!

2. 使用计数信号量时
将configUSE_COUNTING_SEMAPHORES宏置1

3. 未完待续!