消息邮箱的本质和可能出现的问题

消息邮箱的本质是把一个(局部)变量(一片内存空间)的地址发送给相应的任务。

这要求这片内存区域是一直能被被访问的,如果这片内存区域是在任务中定义的,因为任务是一次没有结束的,所以,这片内存不会被释放;而如果是在中断函数中定义的,则应该定义为静态变量,来保证这片内存不会被释放。

另外一个问题,以串口接收为例,串口接收中断把消息发给其他任务,如果数据还没有来得及被处理,串口又收到了一包新的数据,那么缓存中的数据可能就会被更新,导致数据错误。这就对串口数据的传输间隔和数据的处理速度提出了要求。应该在任务设计时做考虑。具体怎么考虑,还在继续学习。先给自己把问题提在这里。

发表评论

邮箱地址不会被公开。 必填项已用*标注