stm32不用外部晶振(stm32f7配什么晶振好)
本文目录
- stm32f103vc晶振电路原理
- stm32死机的原因有哪些
- stm32最高时钟
- stm32f7配什么晶振好
- stm32是不是除调试接口IO不能当普通IO使用外,其它IO口都可作普通IO用
- stm32系统时钟的配置
stm32f103vc晶振电路原理
晶振在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率为串联谐振,较高的频率为并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的.
stm32死机的原因有哪些
Stm32出现死机,程序跑飞这类的问题,我之前在开发过程中就遇到过,造成这种不良,有很多可能的原因,软件硬件都有可能,需要从几个方面去排查
硬件方面:
1stm32的供电电压是否稳定,是否在正常工作电压范围内。电源文波大小一定要小,一般Ldo供电在3.3v在几个ma,在stm32的vdda和vssa引脚一定要接磁珠,各个电源硬件要接滤波电容
2晶振以及旁路电容,一定要尽可能的靠近单片机,整个电路中是否有裸露的接口如usbio口这类的接口,因为冬天人体或者其他物体静电很大,当瞬间大静电通过接触,传导给单片机时,很容易引起单片机复位或者死机,所以有这样的接口需要做防静电电路,或者专用防静电芯片在保护单片机不死机。
3单片机复位电路,一定在设计的时候需要加旁路电容,同时需要保证复位电路电源稳定,这个与第一点原因说明一样。
4无线射频信号,当电路中有无线类如蓝牙wifigsm等无线射频信号时,也很容易因为无线辐射干扰造成单片机死机,这个就需要找专业测试天线的公司或者设备或者人员去测试辐射状态。无线射频的电线一定要匹配好,否则很容易会有无法预测的不良状态出现。
硬件是软件运行的载体,需要在设计时候就考虑好,增加抗干扰因素,
硬件可以通过静电台空气放电一万伏,接触式采用八千伏,使用一定数量的机器,一定次数的测试,如果不出现死机情况,就说明硬件基本没有问题。
软件方面
1考虑堆栈,编译器默认启动文件中,有堆栈设置的代码,一般官方默认的堆栈设置的比较小,当你的项目代码量大的时候,需要调整这个文件里面堆栈大小
2检查代码,是否有不合理死循环,检查是否有定义的数组溢出,造成程序跑飞
3是否有使用内部flash存储,当不合理的flash内存操作时,也会造成死机.经过批量试产,机器死机问题得到解决.
4不合理的中断,当有多个中断处理时候,一定要设置清晰各个中断不同的中断优先级,不合理的中断设置,也有可能造成死机情况的出现。
5定义的数组不合理,在使用的过程中出现溢出,结果程序就在使用不可知的某一个flash位置的数据进行处理,所以这点也很重要。
以上是我根据自身项目经验,对stm32死机问题的分析与处理。
想了解更多电子元器件,电子开发设计,嵌入式编程,研发相关管理知识或者观点,请记得加【关注】
欢迎您转发,谢谢您
stm32最高时钟
stm32F1系类最大72Mhz你可以超频用但是不一定能稳定可靠工作比方说你用8M晶振配置按照72M主频算,直接换成10M晶振主频自然就是90MFlashLeancy设到最大应该可以比72Mhz高一些,另外APB1分频要小于等于36MHz,要用usb的话必须是48或72
stm32f7配什么晶振好
STM32F103系列芯片,最高工作频率可以到72M,使用8M的外部晶振,一般还需要使用内部的PLL锁相环进行倍频,相比于内部的8M的RC震荡。 STM32工作频率是由晶振倍频来的,以STM32F103VBT6为例,晶振是8M,设置PLL倍频为9的话,工作频率为72M,一般ADC电压不超过VCC; 如果超过ADC,一方面数据可能出错,另一方面电压超过IO口承受范围造成单片损坏,ADC一般都通过电阻分压后进行转换,很少有人把直接信号直接引入ADC转换,特别是功率信号。
stm32是不是除调试接口IO不能当普通IO使用外,其它IO口都可作普通IO用
首先,STM32的引脚包含不属于任意组的引脚,如VBAT,VSS,VDD,NRST,VSSA,VREF+,VDDA,VCAP,BOOT0,PDR_ON等。这些引脚被归类为特殊功能引脚,其功能已经被设计好,作为芯片的最小系统使用,只有这些引脚被提供合理信号该MCU才能正常工作。
其次,当下载口选择serialwire时,PA13和PA14被占用,这也是最省引脚的一种下载方式,也是最常用的一种使用方法。除了以上特殊定义功能引脚下载以外,其他引脚理论上都是可以作为普通IO口使用。
但是MCU一般还需要外接晶振作为芯片的时钟源,一般不推荐使用内部晶振,因为内部晶振信号不准。当需要外部高速晶振时,PH0和PH1会被占用,当需要外部低速晶振时,PC14和PC15会被占用。
除此以外,其他的引脚我们才会作为设计功能使用,比如你提到的普通IO功能。
以上就是一名研发工程师给出的建议,谢谢。
stm32系统时钟的配置
上面所给的程序是使用内部晶振的,而通常开发板都会使用外部晶振通过倍频使用。内部晶振最高只能倍频到64MHz,而使用外部晶振能够倍频到72MHz。如果板子上确实有外部晶振,请使用外部晶振!使用外部晶振配置实例如下:使用HSE时钟,程序设置时钟参数流程:
1、将RCC寄存器重新设置为默认值RCC_DeInit;
2、打开外部高速时钟晶振HSERCC_HSEConfig(RCC_HSE_ON);
3、等待外部高速时钟晶振工作HSEStartUpStatus=RCC_WaitForHSEStartUp();
4、设置AHB时钟RCC_HCLKConfig;
5、设置高速AHB时钟RCC_PCLK2Config;
6、设置低速速AHB时钟RCC_PCLK1Config;
7、设置PLLRCC_PLLConfig;
8、打开PLLRCC_PLLCmd(ENABLE);
9、等待PLL工作while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
10、设置系统时钟RCC_SYSCLKConfig;
11、判断是否PLL是系统时钟while(RCC_GetSYSCLKSource()!=0x08)12、打开要使用的外设时钟RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()