本文目录一览

1,为什么STM32需要2个晶振

这个说错了,你说的晶振是指HSE振荡器的外接的晶振,内部没有晶振,是振荡电路,比如看门狗这些就是用的内部振荡电路,频率不高,但是需要作为复位,程序错误保护这些

为什么STM32需要2个晶振

2,STM32中用US100超声波波特率为9600但是晶振是8M的程序写好接

晶振是8M的还是16M的这些都没有关系 主要是你自己的程序里面把时钟配置好 根据你的主时钟设置串口的波特率9600 串口通信很简单的波特率 校验位什么的都设置好应该不会有问题!

STM32中用US100超声波波特率为9600但是晶振是8M的程序写好接

3,STM32L152的内部MSI晶振为什么偏差这么大

 STM需要2个晶振,1个是HSE,常用外部高频,PLL倍频用,常为8MHz;另一个为外部低频晶振,系统待机或低功耗时用,为32.6KHz。外接的那个用于 RTC 的32768 晶振,需要专用的 6PF 负载晶振。内部也有高低频RC振荡器。

STM32L152的内部MSI晶振为什么偏差这么大

4,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。希望我的回答对你有所帮助

5,STM32能用12m的晶振吗

可以。改两个地方:1、stm32f10x.h第119行,“800000”改为“1200000”;2、system_stm32f10x.c,1057行设置72MHz那里,原来是 8M * 9 = 72,改为 12M * 6 = 72,所以把“RCC_CFGR_PLLMULL9”改为“RCC_CFGR_PLLMULL6”。
本来就可以,他的72M是单片机内部倍频功能从12M造出来的
uart 通信的波特率是跟时钟频率有关的。所以随便换个晶振,必然影响 uart 的工作。翻开库函数 usart_init,通过 rcc_getclocksfreq 函数获取系统频率的。而此函数又是由 hse_value 影响频率值的。这就是晶振频率。这个宏在 stm32f10x.h 里做了定义,你可以直接到这个头文件里改掉它。由于使用了 #if !defined hse_value#define hse_value xxxx的方式,由于keil mdk 编译器的预定义符号里被不能给 hse_value 定义 12000000 这样的常数,你也可以自己建立一个头文件来定义 hse_value 12000000, #include 先于 stm32f10x.h (说起来有点复杂,但可以不去改 stm32f10x.h)。

文章TAG:stm32内部晶振是多少stm32  内部  晶振  
下一篇