嵌入式\单片机软件开发要注意的事

结合工作经验做一点总结  

目录

一、工程结构\软件分层\架构设计\提高可读性和便于维护

1、硬件属性描述

 2、硬件驱动(方法)

二、较高的可移植性

三、扩展性

四、硬件兼容性


一、工程结构\软件分层\架构设计\提高可读性和便于维护

一个完整的产品会有多个部分构成,各部分独立控制、协同运行。在代码上如何体现呢?

1、硬件属性描述

比如按键属性,创建一个结构体描述出按键所有的特性,初始化时按照定义的按键属性进行操作。如果有很多按键那么就可以定义一个按键结构体数组,初始化时或遍历扫描按键时会比较容易操作。

struct key
{
    长按触发事件  //长按的时间
    有效电平      //高或低
    按键引脚      //例如GPIOA_10
    ...
    按键产生的事件:点击 双击 长按
}

 例如:一个SPI驱动的LCD

typedef struct  
{
    水平像素
    垂直像素
    亮度值
    显示方向
    使用到的GPIO(结构体)
    SPI设备(结构体)
    
}dev_lcd;

typedef struct
{
    SPIx     //使用的SPI端口
    速度
    是否繁忙
    
    使用到的GPIO(结构体)
    
}dev_spi;

typedef struct
{
    GPIO端口 PA PB
    GPIO引脚 PA0 PB10 
}dev_GPIO;

 2、硬件驱动(方法)

有了硬件的描述数据,我们围绕这些数据可以定义一些列的接口和操作函数。

比如针对这个LCD做几个查询函数,获取宽度、高度、显示方向,当前亮度等。操作函数,写入数据时就引用包含的SPI作为形参

二、较高的可移植性

数据类型:使用自定义的类型符号替代标准类型符号。比如UC8 替代unsigned char来表示8bit无符号数据。

单向依赖:a.c b.c两个文件在b中调用a的函数,a不能调用b的函数。在文件注释中标注依赖关系,这样文件之间的关系更清晰。

三、扩展性

多语言种类扩展:不把显示的词条写到程序里,而是使用数字表示。定义词条数组,显示时替换字体地址

 

四、硬件兼容性

硬件的改动有以下几种情况:

1、更换主控单片机:程序是否能兼容?

2、更换某些集成电路驱动:比如换掉步进电机驱动。8M、16M晶振混用。

3、和程序无关的硬件改动:改变外围电阻值等。

五、写代码要做的事

①合理的版本管理

 

②完善的错误反馈

 

③统一编码风格

 

④模块化编程

 

⑤完善的注释

包括工程介绍、源码文件说明、函数说明、代码注释。

 

 

 

 

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值