单片机软件调试方法有很多,今天我们来看一看都有哪些值得大家学习的调试方法。
欢迎关注哈,有搞单片机的北漂吗,来抱团取暖吧,关注私信入群
一、一切跟着手册走
单片机本身就是要驱动各类传感器,软件都是跑在最底层的,这样一来,各类时序波形调试相信大家都遇见过,比如IIC总线调试,SPI总线调试,CAN总线调试等等。
总线类的调试记住一个原则,一切以协议为准,这里的协议指的是你使用的芯片的协议描述,这一点很重要。
我们举个栗子,比如要使用stm32驱动一个SPI接口的ADC,很多同学的操作是,打开keil,找到库函数里面SPI的初始化函数,复制粘贴过去,再写一个读写函数,然后开始跑,发现并不好使,读不到数据,咋整?
看手册,这个ADC的SPI接口的时钟极性有没有要求,最大速率和最小速率有没有限制,传输bit数是多少,8bit?16bit?
要知道,SPI总线协议只是规定了各个参数的范围,具体到各个具体的传感器芯片旺旺会有特定的限制,你没有注意到这些,很可能就会掉进坑里。
二、二分法查bug
我们调试软件的时候,经常会遇见死机问题,难点就在于无法定位死机的具体位置,一旦我们定位了出问题的语句,解决它就是分分钟的事情。
一个屡试不爽的方法就是二分法,把整个软件按照执行流程分为两部分,屏蔽掉后面的流程,观察还有没有死机现象,没有的话就说明导致死机的语句在后半部分,然后继续二分查找,相信用不了两次你就能把这个bug揪出来了。
这个方法我一直在用,很简单但是非常的有效。
三、构建log工具
这个方法适用于资源相对丰富的MCU,可以构建一个log输出接口,实时输出我们感兴趣的日志信息。
log使用起来感觉非常棒,定位问题也非常快,简直是调试方法里的高富帅,根据log可以快速定位跟踪函数运行状况,跟踪变量状态等等,绝对是调试利器。
今天调试方法先讲这几个,明天我们用实际项目来实战,让大家见识见识这几种调试方法组合起来的巨大威力,欢迎关注。