2019年4月10日晚,我的一个朋友找我帮忙调试软件bug , 他跟我说:硬件绝对没问题的,因为是公司成熟的硬件电路图;肯定是软件问题。功能:将超声波的数据通过串口发送出去。运行现象:屏蔽超声波部分的代码,串口可以长时间发送,但是加上超声波后,单片机只能发送大概2分钟,就不发送数据了。超声波的程序没问题的,因为之前在开发板上测试通过了。在调试期间,突然发现程序大概每3秒发送一次,但是程序里的延时函数,仅仅延时300毫秒。按道理应该300毫秒发送一次,而不是3秒。检查软件时钟配置,并未发现不妥。
查看硬件电路图,发现电路图里的8MHz的匹配电容有问题,设置的太小了,不到1pf 。按道理应该设置为22pf 。
下面是代码里的批注,拷贝过来。
delay_ms(100);//延时在stm32f103rct6里延时不准,感觉慢了10倍,延时接近1秒 。最后发现 是匹配晶振的电容问题,改成22pf就可以了,即与8MHz一起工作的电容,改成22pf就可以工作了。就是外部晶振没有正常工作。
即导致STM32F103的系统时钟配置不了72MHZ,一直是8MHz工作。
参考:
http://www.openedv.com/posts/list/59727.htm
http://www.openedv.com/forum.phpod=viewthread&tid=53641&page=1
https://www.cnblogs.com/vonly/p/7411169.html
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!