stm32延时比实际需求慢了大概10倍的问题

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.php?mod=viewthread&tid=53641&page=1

https://www.cnblogs.com/vonly/p/7411169.html

 

 

你可能感兴趣的:(单片机)