共1条
1/1 1 跳转至页
关于单片机单步调试可以实现功能,一步烧写却不能实现功能的解决方法 ...

在调试单片机时,遇到用到MCU内部的自带硬件时,很可能会遇到这种问题(如果代码是自己写的话,可能性更大):所写的代码单步调试没有问题,可以实现功能,但是如果一步烧写的话,(通常为F5),则不能实现预期的功能。
我在调试TI的MSP430芯片和ATMEL的AVR芯片时,遇到串口通信或I2C总线的通信,需要用到MCU自带的USART硬件,当进行多个数据的读写时,都遇到这种情况。参照官方的参考代码,似乎没有错误,可是就是不能实现功能。
起初以为是调试器和IDE的问题,经过分析,原来是代码的问题。
MCU的主频一般都是MHz级的,而I2C和串口通信最快也就是kHz级,例如要发送两个数据时,单片机让总线发送数据后立即执行后续指令,但是由于总线速度较慢,并没有完成数据的传输就被CPU执行后续操作,必然会达不到预期的功能。
解决的方法可以在数据操作之间增加适当的延迟函数,即可解决问题。通过增加延时函数,我的代码都可以一步烧写并实现功能了。
共1条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
嵌入式LinuxC语言程序调试和宏使用技巧被打赏50分 | |
让代码中包含最新的编译时间信息被打赏50分 | |
rtthread硬件加密--2crc加密分析被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】mcxa156使用低功耗定时器适配硬件RTC框架被打赏26分 | |
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 |