1.初始化
(1)屏蔽所有中断,并初始化堆栈指针。
(2)清除系统的RAM区域和显示Memory。
(3)IO口的初始化。对于输入口,需要设定其上拉或下拉电阻。对于输出口,则必须设定其初始的电平输出。
(4)中断的设置:对于项目需要用到的中断源,应该给予开启并设定中断的触发条件,对于不使用的多余的中断,则必须给予关闭。
(5)其他功能模块的初始化。通讯模块,系统时钟等。
(6)参数的初始化。完成了MCU的硬件和资源的初始化后,接下来就是对程序中使用到的一些变量和数据的初始化设置。
2.主程序循环体
大多数MCU是属于长时间不间断运行的,因此其主程序体基本上都是以循环的方式设计,对于存在多种工作模式的应用来讲,则可能存在多个循环体,相互之间通过状态标志来进行转换。对于主程序体,一般情况下主要安排如下的模块:
(1)计算程序
(2)显示传输程序:主要针对存在外部LED、LCD Driver的应用。
3.中段处理程序
主要用于处理实时性要求比较高的任务和时间。如,外部突发性信号的检测,按键的检测和处理,定时计数,LED显示扫描。
一般情况下,中段程序应尽可能保证代码的简洁,对于不需要实时处理的功能,可以在中断程序中设置触发的标志,然后由主程序去执行具体的任务。
4.对于不同任务体的安排,不同的MCU其处理的方法也有所不同
(1)低速、低功耗MCU,对按键的反应和显示的反应要求实时性较高,因此一般采用定时中断的方式来处理按键的动作和数据的显示。
(2)高速MCU,MCU有足够的时间处理主程序循环体,可以在中断程序中设置触发的标志,然后由主程序去执行具体的任务。
5.防止在中断和主程序体中同时访问或设置同一个变量和数据。