共1条
1/1 1 跳转至页
关于单片机单步调试可以实现功能,一步烧写却不能实现功能的解决方法 ...
在调试单片机时,遇到用到MCU内部的自带硬件时,很可能会遇到这种问题(如果代码是自己写的话,可能性更大):所写的代码单步调试没有问题,可以实现功能,但是如果一步烧写的话,(通常为F5),则不能实现预期的功能。
我在调试TI的MSP430芯片和ATMEL的AVR芯片时,遇到串口通信或I2C总线的通信,需要用到MCU自带的USART硬件,当进行多个数据的读写时,都遇到这种情况。参照官方的参考代码,似乎没有错误,可是就是不能实现功能。
起初以为是调试器和IDE的问题,经过分析,原来是代码的问题。
MCU的主频一般都是MHz级的,而I2C和串口通信最快也就是kHz级,例如要发送两个数据时,单片机让总线发送数据后立即执行后续指令,但是由于总线速度较慢,并没有完成数据的传输就被CPU执行后续操作,必然会达不到预期的功能。
解决的方法可以在数据操作之间增加适当的延迟函数,即可解决问题。通过增加延时函数,我的代码都可以一步烧写并实现功能了。
共1条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| 在FireBeetle2ESP32-C5上实现温湿度检测和显示被打赏¥20元 | |
| 在FireBeetle2ESP32-C5上实现光照强度检测及显示被打赏¥21元 | |
| 以FireBeetle2ESP32-C5实现数据识读播报被打赏¥19元 | |
| 【STM32F103ZET6】14:实测STM32F1的串口输出任务的挂起与恢复功能被打赏¥27元 | |
| Chaos-nano在压力容器监控系统中的项目应用被打赏¥23元 | |
| 基于FireBeetle2ESP32-C5的WS2812B彩色灯带控制被打赏¥21元 | |
| SWM221CBT7显示开发板驱动TFT显示屏被打赏¥19元 | |
| SWM221CBT7显示开发板驱动OLED屏显示被打赏¥19元 | |
| SWM221CBT7显示开发板及其使用被打赏¥20元 | |
| 揭秘Chaos-nano:ArduinoProMini轻量级操作系统开发框架深度解析与实战应用被打赏¥19元 | |
我要赚赏金
