消息邮箱的概念及其作用
RTX 的消息邮箱实际上就是消息队列,通过内核提供的服务,任务或中断服务子程序可以将一个消息 (注意,RTX 消息邮箱传递的是 消息的地址 而不是实际的数据)放入到消息队列。同样,一个或者多个任 务可以通过内核服务从消息队列中得到消息。通常,先进入消息队列的消息先传给任务,也就是说,任务 先得到的是最先进入到消息队列的消息,即先进先出的原则(FIFO)。 也许有不理解的初学者会问采用消息邮箱多麻烦,搞个全局数组不是更简单,其实不然。在裸机编程 时,使用全局数组的确比较方便,但是在加上 RTOS 后就是另一种情况了。使用全局数组相比消息邮箱主 要有如下四个问题: 使用消息邮箱可以让 RTOS 内核有效的管理任务,全局数组是无法做到的,任务的超时等机制需要用 户自己去实现 使用了全局数组就要防止多任务的访问冲突,使用消息邮箱已经处理好了这个问题。用户无需担心。 使用消息邮箱可以有效的解决中断服务程序跟任务之间消息传递的问题。 FIFO 机制更有利于数据的处理。 RTX 中断方式消息邮箱的实现 RTX 中断方式消息邮箱的实现是指中断函数和 RTX 任务之间使用消息邮箱。下面我们通过如下的框 图来说明一下 RTX 消息邮箱的实现,让大家有一个形象的认识。 运行条件 创建消息邮箱,可以存放 10 个消息。 创建 1 个任务 Task1 和一个串口接收中断。 RTX 的消息读取和存放仅支持