本篇4K,立志最细,FreeRtos中Queue使用教程与个人理解!!!
使用空间大小,同时删除静态创建任务,任务使用的内存空间是不会返回的。总结下来最大的区别在于,动态分配不需要确定使用空间大小,删除释放使用空间,静态分配使用前要确定内存空间大小,删除创建不会释放使用的内存空间。
FreeRTOS-实现任务调度器
本文正式开启对FreeRTOS内核的研究,首当其冲的就是就是任务调度器的实现,任务调度器作为FreeRTOS的核心,因为FreeRTOS的本质就是任务的轮流运行,为了循序渐进的学习,避免一口吃成一个大胖子,本文只实现两个任务的切换,先不管任务的优先级,本文的目的就是将任务切换的全过程分析的透透彻彻,
FreeRTOS如何解决访问冲突/线程不安全(临界段、互斥锁、挂起调度、看门人任务)
互斥锁(或者叫互斥量,我用Linux比较多,习惯叫锁,FreeRTOS中叫量比较合适)是一种特殊类型的二进制信号量,用于控制对两个或多个任务之间共享的资源的访问。LP运行,获得互斥锁,HP尝试运行,但是因为没有互斥锁,进入阻塞态,同时因为HP优先级高,LP继承了HP的优先级,不再会被MP抢占。HP就
创建队列流程
1.初始化队列:给队列属性参数赋值,再通过mq_open函数创建队列void ExternalInit(void){ struct mq_attr qattr; //队列属性 qattr.mq_flags = 0; qattr.mq_maxmsg = EXT_MAX_QUEUE_SIZE;