大家有没有听过软件设计中的低耦合,高内聚的两个原则。
具体是什么意思呢?
在一个项目中:每个模块之间相联系越紧密,则耦合性越高;这样你改动其中一个模块,其他模块也需要一起改动,换言之:牵一发而动全身。
一个模块内部各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,也就是高内聚。
如果一个程序的逻辑处理部分,分散到好几个文件中,那么每次改动,就会改动好几个文件,这就是高耦合。
现在的软件结构设计,都会要求“低耦合,高内聚”,来保证软件的高质量,提高软件的可维护性。
下面是一个低耦合高内聚的一种无OS的MCU实用软件框架。
包括任务轮询管理,命令管理器、低功耗管理、环形缓冲区等实用模块。系统中广泛利用自定义段技术减少各个模块间的耦合关系,大大提供程序的可维护性。
主要功能完成的使用例子可以参考platform-lowpower.c,默认情况下是禁用低功耗功能的,读者可以去除工程中原来不带低功耗版本的platform.c,并加入platform-lowpower.c文件进行编译即可使用。
注册低功耗设备以按键扫描为例,正常情况下,如果按键没有按下,那么系统休眠可以进入休眠状态,对按键功能是没有影响的。如果按键按下时,那么系统需要定时唤醒并轮询按键任务。所以在一个低功耗系统下,为了不影响按键实时性需要处理好两个事情:
类似blink模块,使用之前有两个注意事项:
需要系统提供滴答时钟,key.c中是通过get_tick()接口获取,依赖module模块
需要在任务中定时进行轮询
暂无评论