使用单片机的串口打印功能

转载请注明出处
个人看法,仅供分享

单片机调试手段:

1、在线调试

部分芯片支持该功能,典型的有STM32系列的SWD接口,沁恒的CH32V和CH32F系列、CH56X部分RISC-V的两线调试。

2、串口打印

串口打印功能应该是个单片机都能够支持,在51上是特别常用的手段,STM32上根据使用者习惯可能用在线调试功能会多一点。


实现原理:

1、在线调试

芯片本身具备的一个硬件功能,需要在芯片设计阶段就做进去,并且因为硬件实现的功能,实际使用可能需要特定芯片才能支持,同时需要配套特定的外部工具才能实现,可以实现程序的单步运行、程序任意处的断点,做到变量的监控。

2、串口打印

由软件实现,默认是借助芯片硬件串口输出printf函数的内容,printf函数通过标准C库实现,能够实现字符、变量的格式化输出。当然也可以魔改底层printf回调的输出功能函数,实现任意接口、IO的输出、状态响应。

这个部分可以参考:51单片机标准串口使用教程及常见问题: 点这里


个人分享:

串口打印功能的价值:入门单片机的时候用的STC8051,工作初期包括入坑深了之后,调试单片机代码一直使用的是串口打印。接触到的代码模板,逐步养成的编程思维、编程习惯都适应了串口打印方式。

一直没有用在线调试,主要考虑到调试的一些接口通讯时,实质上是不允许单步和断点的,往往接口停下来的结果就是断连,比如USB口、网口、BLE。这些接口,一是不允许停,二是这些接口通常都有完善的底层,出问题多半是协议层,应用层逻辑的问题,是在通讯过程中产生的错误,CPU停了,通讯断了,也就没问题了。三是大型的、复杂的接口,一般都是函数库形式,即使调试,也看到不什么。

串口打印功能其实是挺方便的,硬件设计的时候预留个插针,最少两根线也能观察芯片的运行状况了(TXD、GND)。用于输出的串口的波特率调高一点,对于程序运行的影响其实也不大,同时底层实现是占用CPU的,也不会影响芯片响应中断。可以在代码任意地方输出变量,CV一下就能增加一个状态输出,也挺快。同时配合一些电脑上的串口接收助手,单片机做好格式输出,能够直接将数据保存CSV,导入excel能够绘制线图,十分方便,在评估ADC性能的时候经常用这个方式,ADC采样正弦波,串口输出,excel绘图,和信号发生仪的正弦波函数做对比,轻轻松松看出误差。可能在线调试也能做到(没有深入用过),但是要是换了一个单片机、开发环境、调试器,到时候实现类似操作又要从头开始。串口打印的通用性是最好的!同时串口还能用来监控实际产品的运行状态,类似留给产品调试人员的后门,串口的通用性,带来的是产品整个生命周期的调试方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值