- 8
- 0
- 约3.06千字
- 约 7页
- 2018-10-14 发布于福建
- 举报
单片机C语言编程的经验总结
单片机C语言编程的经验总结
[摘 要]总结单片机C语言编程的经验和教训。
[关键词]经验教训,单片机,函数,编程
中图分类号:TP273.4;TP18 文献标识码:A 文章编号:1009-914X(2017)14-0335-02
[Abstract]Summing up the experience and lessons of C programming language.
[Key words]experiences and lessons; Single-Chip Microcomputer/ Microcontroller ; function ; programming;
一、引言
单片机,也被称为“单片微型计算机”、“微控制器”和“嵌入式微控制器”[1],是指在一个集成芯片中,集成微处理器、定时/计数器、存储器、通信部件和基本的I/O接口,即在一个芯片上实现一台微型计算机的基本功能[2]。虽然它存储量小、接口简单、功能较低,但是控制能力强、可靠性高、低功耗、低电压、系统扩展容易[1],体积小、价格便宜可大大降低各类开发的成本。
最近几年特别是开始从事3D打印开发工作以来,逐渐接触了单片机,并开始做了一些单片机C语言编程的工作,到?F在已经5、6年了,感觉是总结一下的时候了。
二、经验
1.找到入口
开始学习时总是一头雾水,看示例程序也总感觉那么多文件不知从何开始,后来想起以前用任何语言编任何程序实际都有一个整个程序开始的入口位置,仔细观察果然发现单片机程序实际也都是从一个main函数开始进入的。就是在用户程序中没找到main函数的,也在所使用软件的核心程序中找到了(比如Arduino软件).
不仅如此,单片机的main函数的内容都很有规律,一般都是前面做初始化工作,然后就是一个循环一直运行。以Arduino软件为例,针对AVR系列单片机的核心main函数如图1:
其中init()是单片机核心部分的系统初始化函数,initVariant()是核心部分的变量初始化函数,setup()是用户的硬件和变量的初始化函数,loop()是用户运行的循环函数,其余USBDevice.attach()、serialEventRun()是对串口设备的连接、中断处理的通用函数。这样一来用户程序中基本就只需要编写setup和loop就可以了,无需编写main函数。
找到了入口,就一下子找到了头,可以对示例程序一步步研究下去,自己编程也知道从何开始了。
2.单独的设备测试程序
在新增加一些外部设备时,我感觉不要一开始就把它加到整个程序中去,那样经常会把自己弄混,出了错都不知道原因在哪。
最好先排除其他全部设备或尽量把无关的设备排除掉,单独做一个简单的专门针对这个设备的程序来测试,成功后再把它加入到整个工程中去。就是说要先基本确定这个设备单独的初始化、运行都是正常的,再把它混合到大系统中观察与其他设备的联合运行情况,至少可以先排除某些错误、确定某些问题,在实践中我感觉这样做很有用。
3.使用工具
在增加比如LCD、EPROM之类的外部设备时,开始调试期间总是这样那样的不顺利,特别是一些元件的协议不清楚的情况下。找供应商拿例程、上网查找资料当然是必要的,但我感觉这种时候示波器、逻辑分析仪之类也是很有用的,至少可以先看清楚信号是否发送,是否发送得准确,然后可以再检查其他部分,确定是哪部分的原因,是硬件接线出错还是对它的设置出错,给自己调试确定一个方向。
比如有一次增加一个I2C的LCD屏,写好程序后测试LCD屏却无法显示,开始一心以为是程序对屏的初始化设置有问题造成数据没有发送出去,不断修改参数却一直无效,后来想起用示波器,一看才发现信号都是正确发出的,赶紧去检查其他部分,很快发现是地址错误,一修改正确马上就显示正常了。
所以适当的时候使用工具是编程测试中很好的辅助。
三、教训
1.别忘了喂狗
由于单片机自身抗干扰能力不强,尤其在一些条件比较恶劣、电磁干扰较强的场合,常会出现单片机因受外界干扰而导致死机或程序跑飞的现象,造成系统不能正常工作,业界通常采用看门狗技术来防止单片机死机,将死机的系统重新复位并使其正常工作[3]。常用的看门狗技术分为软件看门狗和硬件看门狗。
这里要讨论的是软件看门狗的问题。所谓软件看门狗一般采用高级中断的方式执行,通过在中断程序中设置系统复位寄存器或对程序计数器赋予初始值的方式进行系统复位。同时在系统正常的主循环中适当插入喂狗指令来重置定时器值,说明系统是正常运行不需重新启动。这样当程序真正跑飞或进入死循环时,定时器因计时完成执行复位程序,就使系统复位[3]。
用软
您可能关注的文档
- 华德福幼儿课程之的研究.doc
- 华文旧体诗词的研究构想及其当代价值初探.doc
- 华旗饭店纳税筹划博弈的研究.doc
- 华明珍治疗失眠临证的经验.doc
- 华池县农业技术推广的现状及对策.doc
- 华晋焦煤有限的责任公司瓦斯治理理念的研究.doc
- 华林社区中医特色家庭病床服务的模式的研究.doc
- 华法林药物相关基因组学的研究进展.doc
- 华润啤酒整合的策略.doc
- 华池县基层畜牧兽医人才队伍建设的研究.doc
- 人教版九年级英语Unit 4曾害怕课件3a-4c.pdf
- 雅思口语考题回顾:朗阁海外考试研究中心2019年10月10日Part 1考题总结.pdf
- 2026届高三地理一轮复习课件小专题河流袭夺.pptx
- 【名师原创】复习专题5 三角函数 作者:合肥市第八中学 蒲荣飞名师工作室.docx
- 高中数学一轮复习 微专题2 抽象函数.docx
- 高中数学——复习专题4 空间向量与立体几何.docx
- 高中数学一轮复习 微专题3 空间几何体中的截面、轨迹问题.docx
- 高中数学一轮复习 微专题4 空间几何体的最值、范围问题.docx
- 导流洞施工质量通病防治手册.docx
- 江苏省徐州市第一中学、徐市第三中学等五校2026届高三上学期12月月考历史试题含答案.docx
最近下载
- 驱动电机及控制技术中职全套教学课件.pptx
- 创意简约卡通小清新医疗静脉输液的安全通用PPT模板.pptx VIP
- 标准图集-12J003-室外工程.pdf VIP
- 基于单片机的出租车计价器设计.docx VIP
- 实施指南《GB_T28698-2012滚动轴承电机用深沟球轴承技术条件》实施指南.docx VIP
- 新型水处理技术推广商业计划书.doc
- 期末复习+课件-2025-2026学年浙教版科学七年级上册科学.pptx VIP
- 我国航海教育管理研究的开题报告.docx VIP
- 新解读《GB_T 28698-2012滚动轴承 电机用深沟球轴承 技术条件》.pptx VIP
- 盆底康复治疗临床诊疗指南.docx VIP
原创力文档

文档评论(0)