UCOSIII学习笔记(下)

一、消息传递:
两个消息任务之间当然要通讯,那么消息是如何进行通讯的。
(1)、消息队列:消息一般包含:指向数据的指针,表明数据长度的变量和记录消息发布时刻的时间戳。UCOSIII内只有消息队列没有消息邮箱(其实邮箱就是消息个数只有1的消息队列)
注:中断只能用OSPOST发送消息
(2)、在 UCOSIII 中对于消息队列的读取既可以采用先进先出(FIFO)的方式,也可以采用后进先出(LIFO)的方式。注:采用后进先出的方式,发布的消息会绕过其他所有的已经位于消息队列中的消息而最先传递给任务。
二、事件标志组:有时候一个任务可能需要和多个事件同步,这个时候就需要使用事件标志组。
分或同步,与同步。和数电中类似。或同步只要有一个标志,任务就会被同步。与同步需要所有标志。
三、同时等待多个内核对象:注:只能等待普遍性的内核对象,比如信号量,消息队列,互斥信号量
事件标志组是不能被标注的。
四、储存管理:
分两种方式
(1)、我们在使用 Keil MDK 编写STM32 程序的时候就可以使用 malloc()和 free(),但是不建议这么用,这样的操作会将原来大块内存逐渐的分割成很多个小块内存,产生大量的内存碎片,最终导致应用不能申请到大小合适的连续内存。
(2)、把储存区分成区。区里面有多少块。在申请时申请块,使用完再放回去。注:申请的块一定要比数据的大。缺点:不灵活。
原子也有自己写的malloc和free

————————完结撒花————————————

发布了27 篇原创文章 · 获赞 3 · 访问量 1417

猜你喜欢

转载自blog.csdn.net/qq_42860166/article/details/100057288
今日推荐