一说点灯,大家都不以为然,认为是一个最简单的GPIO外设控制例程,然而,在这一个小小的LED闪烁的背后,有着很多不为人知的秘密。
一、验证PCB制作正确性
这里出问题的可能性是比较小的,但是也会有个万一。
在PCB制作过程中,也会有很多问题,比如短路、断线等等。
本人就在某网上打样时,内层给我断了线,找了几天的问题才发现,是板子的问题。
虽然,点个灯,也只能是验证这部分的PCB,没有办法验证所有的PCB问题,但至少可以确定PCB的大体的质量。
二、验证电源正确性
电源这里是最主要的了,一般的单片机,你用个1117就可以了,这电路也简单,没有必要验证么?不然,你焊接就不会有问题么,就不会短路么?这些问题都是影响点灯的。有一个问题存在,你的灯就不会亮,或是不会闪。
对于复杂的电路或是芯片,上电的时序是有要求的,电源也不仅仅只有一路3.3V,而是5V、3.3V、1.8V、1.2V、1.0V的多路电源,这其中有一路出问题,你的灯也是点不起来的。还有可能把电路、芯片烧掉。
如下,就是一个要使用三路电源的芯片电源电路,使用了三路DCDC转换出三路电源。
以及一个芯片的上电时序图,可以看到,芯片的上电的时序还是很重要的,如果不是这个上电时序,那么芯片是无法正常工作的。当然,灯也是点不亮的。
三、验证主控芯片是否工作正常
主控芯片的工作,电源是前提,前面已经提到了。
还有就是芯片外设的电路,复位电路,是RC,是看门狗,是其他芯片控制,都要进行一一的验证,否则,芯片一直复位,怎么点灯?
芯片启动方式配置电路,是不是正确,上拉、下拉配置是不是正确。
四、配置开发环境
开发环境不仅仅是Keil、IAR这些,在Linxu的下的开发环境,要安装对应的gcc工具,配置依赖关系,配置并编译支持的函数库等等,当然是不同的芯片有不同的开发环境配置步骤与要求的。
五、搭建基本程序工程
这一节,不要跟我说什么STM32CubeMx,难道你这辈子只使用STM32么?
如果是STM32、51之类的,最多是启动文件,库文件两个方面,库文件中又有很多类,一一添加到工程中,配置好头文件路径,如果是DSP类的,还有要Memory的配置文件。这里只是工程建好了,能不能编译,有没有错,还要看下一步。如果是Linux下的,makefile,config之类的也不可少了。
六、代码开发工具配置与编译
如果是使用IDE,那么,不用说,点点鼠标就编译好了,但有时,也要进行一下配置吧。
比如仿真器配置,烧写算法,头文件路径等等。
在Linux下,就要使用gcc与makefile了,简单的,只有几个源文件的,可以手动使用gcc,要是比较庞大的工作,使用makefile是必然的了。
当以上的所有工作都是正常的情况下,恭喜你,你的LED可能会亮起来的了。为什么是可能而不是肯定呢,在电子开发过程中,总是会有一些很奇葩的bug,就是怕会遇到,所以,还是小心为妙。
所以,要点一个LED,所要做的工作是很多的,并不是几行代码就可以搞定的。如果你只是在一块现成的开发板上进行LED点灯,那么就不用管理那么多了。如果你点LED灯是在一个开发板上的一个例程中,那么还真就是几行代码了事儿了。
当然,当你的灯点不亮的时候,也不要着急,按上面的几条,一一进行验证与确认,程序上的配置对一下数据手册,就不信会点不亮。要是真不亮,那么变来云汉来提问吧。
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×