1.4 小结

MS虽是一个很简单、易用的前后台架构,但它满足很多中低端嵌入式需求,基于这个架构,底层稍做修改就可以移植到其他单片机下,比如AVR、ARM等。

一个架构,本质上讲就是一个模板,针对一些常用的需求提出一套开发模式,而MS就是其中一种。不同的硬件设备存在不同的访问速度和执行时间,不同的产品存在不同的实际需求,只要在保证需求的情况下,速度越慢对系统可靠性越有利,这些需求交织起来,就需要架构提供多种处理方式,那么基于前后台的三要素:中断、节拍及大循环,用消息把这三个要素关联起来,就可以满足大部分的需求。

1)中断响应外部事件,要求及时准确,但内部预处理要尽可能的精简,不要有太长的延时。处理完后抛出消息给大循环。

2)节拍本质也是一种中断,只是时间固定的定时器中断,基于节拍,可以实现很多不需要太高速的采集及执行,主要是输入输出传感器、按键、串口,采集到的信息抛出消息给大循环。节拍也可以执行中断或者大循环中的一些命令字。节拍编程是MS的一个重点,要求代码尽可能的精简,不允许有大的延时,内部执行的时间不能超过一个节拍的时间,否则会影响系统正常工作。建议尽可能少用中断,而多用节拍实现一些非必要的中断,这样可以大大提高编程可靠性。因为中断是突发插入性的,所以编译器编译时,往往要考虑最大内存;其次中断可能恰好插入了某一个临界态导致可靠性下降。对于这类不确定、不规则的东西,尽可能的少用,当然不是说不用。

3)大循环根据各种消息类型处理非紧急、低速的消息业务,人机界面显示主要是由这部分完成。

MS的文件目录结构非常清晰,根据实际项目需求,添加了常用的设备驱动,比如软件定时器、按键、串口、时钟、界面,用户可以参考已有的设备添加自己的设备。

1)app.c和mmi.c属于应用层,公共头文件为app.h。

2)system.c与system.h算是中间衔接层,提供必要的功能函数,比如消息函数都在这里。

3)device_key.c、device_timer.c、device_rtc.c、device_usart.c、device_sensor.c等都属于设备驱动层,直接跟硬件打交道,基于硬件抽象出各个设备,提供给应用层,它们公共的头文件为device.h。

4)最底层的就是硬件,操作的是寄存器,它由reg52x2.h提供。