从事单片机开发多年,本人在此分享一些单片机开发的心得体会,与大家共勉。虽然单片机软件开发也是软件开发但与物联网软件工程师不一样,接触的基本都是XXXPCB板,所以你不止需要熟悉C语言,还需要一定的硬件知识。不需要你能画图,但能够看懂原理图是最基本的。 单片机软件开发大致可分为以下几个步骤: 1,单片机软件开发,一般需要等到硬件工程师将硬件调好之后才会将板子交给你,所以在此之前,可以像硬件工程师拿到XXX板子原理图,了解板子上单片机用到了什么外设,需要些什么基本功能。然后搭建工程,初步移植一些外设驱动iic_driver.c与具体的传感器驱动程序at24c02_driver.c。然后确认板子的下载口。在拿到板子之后就可以连接好下载器,看看单板是否能够成功下载,当然如果在焊接不失误,硬件工程师不大意的情况下会提示 SECCESS。但是不出意外的话会出意外 NO device found ,保证供电正常的情况下,这下你就可以检查 (1),单片机引脚是否焊接短路,最小系统阻容是否正确。 (2),再三确认下载线缆 CLK与DIO 接反了。 (3),要是还是不能解决问题,玄学来一波,换个单片机芯片试试吧。 (4)什么,还有问题,想想,是不是硬件封装画错了,单片机型号对不上??? (5)还有问题???自己想想吧,我也无能为力了,实在不行提桶跑路吧。 2,程序能够成功下载之后便可以考虑软甲功能与架构的问题了,单片机程序是从上往下一条一条往下执行的,同一时间只能执行一条命令。如果跑操作系统的话软件架构就好解决了,一个任务一个creat_thread。如果不跑操作系统,那就可以考虑一下有限状态机了。 有限状态机 上文讲到单片机同一时间单片机只能执行一条程序,有限状态机类似原理,在一个状态中同一时间只能触发一个事件。(此处忽略,道行太浅)附上大成者连接:www.youji?.com 搞错了 正确连接:
https://blog.csdn.net/Set_Mode/article/details/95059998
程序的整体框架想好之后,那么就可以接下来将你写好的模块驱动程序挨着烧写到单片机中,测试一下功能是否正常,比如时钟芯片是否能够正确读到时钟,ADC芯片是否能够采集到AD值,传感器芯片是否能让你感觉到温暖。当然不出意外的话肯定还是会出意外的。遇到的问题大致与上面检查单片机的问题差不多: (1)首先确保传感器芯片供电是否正确。 (2)然后检查单片机对应引脚的连接电路与引脚配置是否正确。 (3)用示波器看看协议的驱动时序对不对比如IIC时序可以检查信号发送后 从机是否有应答ACK。 (4)根据芯片官方提供的芯片手册查看器件 命令,地址是否正确。 (5)去找把烙铁找个位置坐下,对着芯片外围电路以及芯片的引脚上缝缝补补,没准就行了呢? (6)???小朋友,你是否有很多问好???调到这一步要是还没有找到问题的话心态基本快崩不住了,是不是该换行了?是不是还是提桶跑路??? 不要灰心,我来告诉你,接下来,低下头拿起板子举过头顶 啪 一声就给摔在地上 我调你XXX的。XXXXXXXX。 冷静冷静,摔板子是不可能的, 正确的做法是 举起板子,看一看公司是否有类似型号,相同封装的芯片,看看同事是否喊错芯片了。别觉得不可能,本人前段时间才踩了坑,一个SPI的器件,第一通道数据能读取,第二通道死活都是0,软件改过去又改回来,硬件翻过去又翻过来,断断续续调了差不多两个多月实在是找不出问题了,最后查看一下公司库存,还有一个系列的芯片一个-2一个-3,抱着试试的心态,-2换成-3 板子上电, woc tmd 就这?? 问题解决。(造成这种问题的原因 可能是硬件同事也不知道这两个芯片的具体区别)。 以上经验是我本人开发过程中的经验之谈,后续如果还有其他什么疑难杂症再补充,这些问题望众周知。少折腾,头发能留一根是一根吧! 尽管单片机软件开发会遇到各种疑难杂症,让你一时不知从何下手,但是要有自信问题总会解决的,当一步一步找到问题之后也会收获满满的成就感,在困难的问题也不过如此。 相信自己 oooooo哦!!~ 写给自己,也写给你们,共勉。
|