这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于单片机单步调试可以实现功能,一步烧写却不能实现功能的解决方法 ...

共1条 1/1 1 跳转至

关于单片机单步调试可以实现功能,一步烧写却不能实现功能的解决方法 ...

助工
2014-09-28 20:20:44     打赏
 在调试单片机时,遇到用到MCU内部的自带硬件时,很可能会遇到这种问题(如果代码是自己写的话,可能性更大):所写的代码单步调试没有问题,可以实现功能,但是如果一步烧写的话,(通常为F5),则不能实现预期的功能。         我在调试TI的MSP430芯片和ATMEL的AVR芯片时,遇到串口通信或I2C总线的通信,需要用到MCU自带的USART硬件,当进行多个数据的读写时,都遇到这种情况。参照官方的参考代码,似乎没有错误,可是就是不能实现功能。         起初以为是调试器和IDE的问题,经过分析,原来是代码的问题。         MCU的主频一般都是MHz级的,而I2C和串口通信最快也就是kHz级,例如要发送两个数据时,单片机让总线发送数据后立即执行后续指令,但是由于总线速度较慢,并没有完成数据的传输就被CPU执行后续操作,必然会达不到预期的功能。         解决的方法可以在数据操作之间增加适当的延迟函数,即可解决问题。通过增加延时函数,我的代码都可以一步烧写并实现功能了。

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]