欢迎来到天天文库
浏览记录
ID:59541278
大小:478.50 KB
页数:62页
时间:2020-11-09
《嵌入式软件设计及编程思想2-1..学习资料.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式软件设计及编程思想2-1..一个嵌入式设计系统一般包含对内显示驱动LED595/IO/TM1629LCD1621/1622等点阵、段式存储驱动EEPROM/铁电/FLASH采样CPU内部AD、AD芯片、测量SOC控制+算法设计原则1.可靠性2.维护性(可读性)3.移植性功能模块分类编程时分文件处理,一般一个驱动、一个功能模块一个文件原则:1.一个驱动芯片相应的操作封装到一个文件中2.一个算法,详细描述计算公式,涉及优化后的公式,标明原始和推导公式,做一个文件3.文件不适合过多,文件名应一目了然,根据文件名知其内容设计分类文件结构遵循一
2、模块一文件格式注释特别是设计更改需注明更改日期、更改人、更改记录(头、行)文件头加注释说明功能文件结构程序版式(易读性)以布局清晰为原则不同函数体不同功能(同一函数中、定义变量)缩进(不要使用空格、使用TAB(4格))程序版式(易读性)推荐写法if(condition){…//programcode}else{…//programcode}不推荐写法if(condition){…//programcode}else{…//programcode}少用if(width3、se,switch考虑default程序版式(易读性)如果出现嵌套的{},则使用缩进对齐,如:{…{…}…}命令规则注意大小写intHowManyPeople;//全局变量intHowMuchMoney;使用下划线intdraw_mode;不要使用不明含义的缩写设计理念空间换时间频繁计算的时间为主例:中断中采样、扫描、读取DI控制DO等应尽可能提高速度,减少调函数、循环次数时间换空间很少需要计算的例:校准、按键操作等应优化代码减少存储空间设计头文件设计头文件设计头文件typedefunion{floatFT;unsignedlongULG;4、signedlongSLG;unsignedcharUBY[4];shortintIWD[2];unsignedshortintUWD[2];}UNION_FT_4BY;typedefunion{shortintIWD;unsignedshortintUWD;unsignedcharUBY[2];struct{unsignedcharBit0:1;unsignedcharBit1:1;unsignedcharBit2:1;unsignedcharBit3:1;unsignedcharBit4:1;unsignedcharBit5:1;uns5、ignedcharBit6:1;unsignedcharBit7:1;unsignedcharBit8:1;unsignedcharBit9:1;unsignedcharBit10:1;unsignedcharBit11:1;unsignedcharBit12:1;unsignedcharBit13:1;unsignedcharBit14:1;unsignedcharBit15:1;}Bits;}UNION_WD_2BY;高低位需要在编译环境中试验定义好,不同的编译环境和CPU可能各不一样显示设计数码液晶混合设计思路段式显示段式显示设计显示6、驱动typedefunion{unsignedcharUBY;struct{unsignedcharA:1;unsignedcharB:1;unsignedcharC:1;unsignedcharD:1;unsignedcharE:1;unsignedcharF:1;unsignedcharG:1;unsignedcharP:1;}LED;struct{unsignedcharBit0:1;unsignedcharBit1:1;unsignedcharBit2:1;unsignedcharBit3:1;unsignedcharBit4:1;7、unsignedcharBit5:1;unsignedcharBit6:1;unsignedcharBit7:1;}Bits;}UNION_SEG_BY;UNION_SEG_BYDSBUF[17];缓冲、显存设计显示驱动在不影响显示的情况下,可重复预制一些寄存器抗干扰动态扫描设计扫描频率计算扫描频率范围一般在50Hz~100Hz过快浪费资源,过慢肉眼可视抖动可软件实现调整变暗例:借用1毫秒中断定时器,5个数码管,1000/5最大可设计200Hz的刷新频率,动态扫描驱动动态扫描+消影1.先关闭所有显示,显示选通不变,输出为灭2.8、等一段时间,先进行其他操作(比如说读按键、开关量、控制时间等)?3.切换到要显示的数码管(选通)4.送显示数据按键检测1.一个按键一个IO(编程方面)2.矩阵扫描(目前公
3、se,switch考虑default程序版式(易读性)如果出现嵌套的{},则使用缩进对齐,如:{…{…}…}命令规则注意大小写intHowManyPeople;//全局变量intHowMuchMoney;使用下划线intdraw_mode;不要使用不明含义的缩写设计理念空间换时间频繁计算的时间为主例:中断中采样、扫描、读取DI控制DO等应尽可能提高速度,减少调函数、循环次数时间换空间很少需要计算的例:校准、按键操作等应优化代码减少存储空间设计头文件设计头文件设计头文件typedefunion{floatFT;unsignedlongULG;
4、signedlongSLG;unsignedcharUBY[4];shortintIWD[2];unsignedshortintUWD[2];}UNION_FT_4BY;typedefunion{shortintIWD;unsignedshortintUWD;unsignedcharUBY[2];struct{unsignedcharBit0:1;unsignedcharBit1:1;unsignedcharBit2:1;unsignedcharBit3:1;unsignedcharBit4:1;unsignedcharBit5:1;uns
5、ignedcharBit6:1;unsignedcharBit7:1;unsignedcharBit8:1;unsignedcharBit9:1;unsignedcharBit10:1;unsignedcharBit11:1;unsignedcharBit12:1;unsignedcharBit13:1;unsignedcharBit14:1;unsignedcharBit15:1;}Bits;}UNION_WD_2BY;高低位需要在编译环境中试验定义好,不同的编译环境和CPU可能各不一样显示设计数码液晶混合设计思路段式显示段式显示设计显示
6、驱动typedefunion{unsignedcharUBY;struct{unsignedcharA:1;unsignedcharB:1;unsignedcharC:1;unsignedcharD:1;unsignedcharE:1;unsignedcharF:1;unsignedcharG:1;unsignedcharP:1;}LED;struct{unsignedcharBit0:1;unsignedcharBit1:1;unsignedcharBit2:1;unsignedcharBit3:1;unsignedcharBit4:1;
7、unsignedcharBit5:1;unsignedcharBit6:1;unsignedcharBit7:1;}Bits;}UNION_SEG_BY;UNION_SEG_BYDSBUF[17];缓冲、显存设计显示驱动在不影响显示的情况下,可重复预制一些寄存器抗干扰动态扫描设计扫描频率计算扫描频率范围一般在50Hz~100Hz过快浪费资源,过慢肉眼可视抖动可软件实现调整变暗例:借用1毫秒中断定时器,5个数码管,1000/5最大可设计200Hz的刷新频率,动态扫描驱动动态扫描+消影1.先关闭所有显示,显示选通不变,输出为灭2.
8、等一段时间,先进行其他操作(比如说读按键、开关量、控制时间等)?3.切换到要显示的数码管(选通)4.送显示数据按键检测1.一个按键一个IO(编程方面)2.矩阵扫描(目前公
此文档下载收益归作者所有