数字通信
数据不大时,用全局变量作为公共资源,配合中断访问,以信号量同步之。
数据大时,运用消息队列机制,把内存数据块作为内容缓冲区。
消息邮箱具有行为同步的功能,当双方的执行频度一样时,消息邮箱很适合,此时的消息是通信双方的局部变量。(注意,ISR应用static保护局部变量,否则它的局部变量会随其结束而消失)
发送一个字以内的短小消息时,可以利用消息邮箱机制,把数据伪装成指针传递给其他任务。
消息队列适合以下场合(需要缓冲功能):
1)、通信双方至少有一方没有稳定的执行周期;
2)、通信双方的执行周期都不同。
a)、试用消息队列需要定义一个消息指针数组,一个消息内容数组;
b)、如果消息内容简短,可以不需消息内容数组(冒充指针法)。
串行通信
1)、相邻两次串行接收中断的时间间隔必须大于系统死区时间;
2)、接收缓冲的空闲时间必须足够存放在死区时间内接收的新数据。
(在满足中断间隔时间大于死区时间的前提下,将中断条件设置为接收缓冲区的一半,即使死区时间接近中断间隔时间,接受过程也是可靠的。)
——《基于嵌入式实时操作系统的程序设计技术》[周航慈] 书摘