对于单片机的开发而言,都是对输入输出设备的的设置,根据不同的规格书,需求来改来改去,一个刚开始编程的阶段感觉,这样挺好的,但是长时间就会发现,一个个项目开始,都会去配置这些基本的操作,然后再去构造整体框架,有一天,大神就掏出自己创造的”武功秘籍”,拿到后发现,果然是大神,此秘籍能秒杀任何项目,解决项目问题也是屡试不爽.OK,我这就简述其内容如下:
前面也说了,从单片机的操作空间来看,输入输出设备是最多与之打交道的,单片机种类很多,每次都要去操作,所以就从代码框架上去着手,大神用五个子函数去划分: Power_VDD_Fuc(),Key_Scan(),Switch_Scan(void),Function(),Device_Function(void)
接下来就逐个分析一下这五个函数的定位:
Power_VDD_Fuc():由名字就可以知道对模块电压的处理,在一些项目中,我们通常会用ADC去获得相应引脚的电压值,比如通过判别电压值的变化来确定按键是否按下等情况,只要是用到AD采集数据时,就拿出来这个就可以,对采样数据的处理,当然最后别忘了对编码数据处理.
Key_Scan():按键扫描处理,在单片机的开发过程中,少不了的就是按键,有按键的地方那就非它莫属了,什么消抖,什么长按短按,什么单个按键操作,亦或是多个按键操作统统搞定.
Switch_Scan(void):”开关”操作,在这里说明一下,”开关”是两个状态的反应,两种不同的结果,不像按键,按下有效,往往是一种状态有效,当然在”开关”也是要做消抖处理的.
Function():功能处理,在这个函数里主要是对按键的状态,”开关”的状态进行判别,主要是对一些功能类型的转换,根据按键的动作,要该作何处理.在这个里面不会涉及硬件设备的具体操作.
Device_Function(void):负载的处理,在这里才对具体的MCU资源进行操作,比如根据按键的Key值决定这里面要操作的灯,电机,蜂鸣器等动作.
由这五个部分来看,是把整个代码框架分成了三块,首先是用户角度的去操作MCU上的按键,开关等,然后就是根据需要去获取这些动作的指令数据,拿到数据后就放到专门处理的地方分析,最后再实现具体的设备操作.
其实,在整个项目软件实现的过程中,要用到这五个函数,不妨再给你的项目进一步细化,试试”功能转换”,用功能转换也是很不错的,通过规格书,把功能分别有几种模式,从外层模式到内层模式,一个个写下来,然后再去思考各个模式之间该要怎么切换,不管有几个模式,无非是对模式切换的操作多了几步而已,或者是该怎么进到一个模式,然后怎么样出来,对于具体的模式内部的逻辑就简单的多了,不论有多少模式,功能也不会让你在写的过程中出现逻辑混乱,交叉.
以上内容是根据大神方法自己理解而写,望路过大神指点0-0