stm32晶振电容(stm32f103用的晶振是有源还是无源)
本文目录
stm32死机的原因有哪些
Stm32出现死机,程序跑飞这类的问题,我之前在开发过程中就遇到过,造成这种不良,有很多可能的原因,软件硬件都有可能,需要从几个方面去排查
硬件方面:
1stm32的供电电压是否稳定,是否在正常工作电压范围内。电源文波大小一定要小,一般Ldo供电在3.3v在几个ma,在stm32的vdda和vssa引脚一定要接磁珠,各个电源硬件要接滤波电容
2晶振以及旁路电容,一定要尽可能的靠近单片机,整个电路中是否有裸露的接口如usbio口这类的接口,因为冬天人体或者其他物体静电很大,当瞬间大静电通过接触,传导给单片机时,很容易引起单片机复位或者死机,所以有这样的接口需要做防静电电路,或者专用防静电芯片在保护单片机不死机。
3单片机复位电路,一定在设计的时候需要加旁路电容,同时需要保证复位电路电源稳定,这个与第一点原因说明一样。
4无线射频信号,当电路中有无线类如蓝牙wifigsm等无线射频信号时,也很容易因为无线辐射干扰造成单片机死机,这个就需要找专业测试天线的公司或者设备或者人员去测试辐射状态。无线射频的电线一定要匹配好,否则很容易会有无法预测的不良状态出现。
硬件是软件运行的载体,需要在设计时候就考虑好,增加抗干扰因素,
硬件可以通过静电台空气放电一万伏,接触式采用八千伏,使用一定数量的机器,一定次数的测试,如果不出现死机情况,就说明硬件基本没有问题。
软件方面
1考虑堆栈,编译器默认启动文件中,有堆栈设置的代码,一般官方默认的堆栈设置的比较小,当你的项目代码量大的时候,需要调整这个文件里面堆栈大小
2检查代码,是否有不合理死循环,检查是否有定义的数组溢出,造成程序跑飞
3是否有使用内部flash存储,当不合理的flash内存操作时,也会造成死机.经过批量试产,机器死机问题得到解决.
4不合理的中断,当有多个中断处理时候,一定要设置清晰各个中断不同的中断优先级,不合理的中断设置,也有可能造成死机情况的出现。
5定义的数组不合理,在使用的过程中出现溢出,结果程序就在使用不可知的某一个flash位置的数据进行处理,所以这点也很重要。
以上是我根据自身项目经验,对stm32死机问题的分析与处理。
想了解更多电子元器件,电子开发设计,嵌入式编程,研发相关管理知识或者观点,请记得加【关注】
欢迎您转发,谢谢您
晶振倍频和降频原理
降频:一个晶振只有一个固定频率,但可以通过分频、倍频扩展出许多频率,原信号通过N分频,频率变为原来的1/N,周期变为原来的N倍。
倍频:频率变为N倍,周期变为1/N倍。倍频是利用锁相环(PLL)的原理进行频率的增倍。如STM32单片机外接8M晶振,但是主频却能跑72M。
stm32内部时钟配置求助,倍频至64MHZ
上面所给的程序是使用内部晶振的,而通常开发板都会使用外部晶振通过倍频使用。内部晶振最高只能倍频到64MHz,而使用外部晶振能够倍频到72MHz。如果板子上确实有外部晶振,请使用外部晶振!
stm32有几个时钟
STM32有五个时钟源:HSE,HSI,LSE,LSI,PLL。HSE来自于外部的晶振(4-16MHz),精度较高;HSI为STM32内部RC振荡器产生(8MHz),精度较差;LSE为外部固定晶振产生(32.768KHz),一般用于RTC;LSI为内部RC振荡器(40KHz)产生,被用于RTC时钟或者独立看门狗时钟IWDGCLK;PLL为锁相环倍增输出时钟源,其时钟输入源可以为HSI/2,HSE,HSE/2,其倍频可以为2-16,但是其最大频率不能超过72MHz。希望我的回答对你有所帮助
如何在proteus中绘制晶振
1、首先双击proteus软件,如图。
2、然后鼠标左键点击左侧的“P”,如图。
3、然后在“关键字”中输入“CRYSTAL”,如图。
4、接着在列表中选择第一个选项并点击“确定”,如图。
5、使用鼠标左键点击一次,此时出现晶振的虚影,如图。
6、最后在图纸的合适位置使用鼠标左键再点击一次,如图,晶振就画好了。
stm32f103用的晶振是有源还是无源
STM32单片机的外部晶振是否需要供电,要看你选用的是无源晶振还是有源晶振。
如果采用的是无源晶振,那么就不需要给晶振供电,振荡电路和所需电源都集成到了单片机内部;如果采用的是有源晶振,就需要给晶振供电。有源晶振通常为4个引脚,包括两个电源脚和一个输出脚,这个输出脚接单片机的oscin引脚。