stm32 为什么有2个晶振?8mhz+32.768k

 

1个是系统时钟晶振是单片机内部系统的主时钟源,它负责控制整个系统的时钟频率。这个晶振的频率一般比较高,通常在几十MHz到几百MHz不等。它和CPU以及各种总线之间相互配合,从而协同工作。

另外一个是外设时钟晶振则通常用于单片机的内部外设模块,如定时器、计数器、串口等,这些模块可能需要与外部设备进行通信或者控制。使用外设时钟晶振,可以让这些外设模块在独立的时钟频率下运行,从而提高了整个系统的灵活性和可靠性。一般来说,外设时钟晶振的频率比较低,通常在几十kHz到几十MHz不等。

需要注意的是,由于单片机内部采用不同的电路处理不同的任务,因此外设时钟晶振和系统时钟晶振的频率不应相同,否则系统可能会出现问题。

2个晶振,一个是HSE(高速外部时钟),常用外部高频,PLL倍频用,常为8MHz。CPU工作时使用的。
另一个为LSE ,外部低频晶振(低速外部时钟),也称时钟晶振,计时用,或系统待机或低功耗时用,为32.768KHz。32768的RTC时钟晶振是给CPU的RTC部件使用的,这时RTC部件和DS1302这样的时钟芯片一样,可以当钟表使用读取时间信息。


你是不是要问时钟晶振为什么是32.768KHz ?

原因有以下几方面:

1、便于分频获得准确的秒信号:32768=2的15次方,这意味着32.768KHz的晶振产生的时钟信号经过15 次分频后,能够产生频率为1Hz的信号,而1Hz的信号正好对应每秒钟一次的计时,非常适合用于实时时钟来确定时间和日期。如果使用其他频率的晶振,想要得到准确的1Hz秒信号,在分频操作上可能会更加复杂,并且难以保证精确性。

2、低功耗:32.768KHz的晶振工作在相对较低的频率,相比于更高频率的晶振,其功耗更低。对于一些依靠电池供电且需要长时间运行的设备,如电子手表、智能水表、电表等,使用低功耗的32.768KHz晶振可以减少电池的消耗,延长设备的使用时间。

3、尺寸和功耗的折中:频率与晶振的尺寸呈反比关系,频率越低,晶振的尺寸越大。32.768KHz的频率在满足低功耗需求的同时,晶振的尺寸也不会过大,是一种比较理想的折中选择。

4、成本较低:在晶振的生产和制造中,32.768KHz的晶振由于应用广泛、产量大,其成本相对较低。对于大规模生产的电子设备来说,使用成本较低的晶振可以降低整体的生产成本。

5、符合人听觉范围外频率:32.768KHz是第一个为2的整次方且超过人听觉范围的频率。人耳的听觉范围一般在20Hz到20kHz之间,使用32.768KHz 的晶振可以避免产生人耳可听到的噪音干扰。

6、历史沿用和技术成熟:从石英钟表时代开始,就采用32.768KHz的晶振来实现准确的计时,经过长期的发展和应用,相关的技术已经非常成熟和稳定。并且在后续的电子设备发展中,为了保持时间计量的准确性和兼容性,也继续沿用了这一频率的晶振。

以上,算是一个有趣的冷知识。


如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理:
1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。
2)对于少于100脚的产品,有2种接法:
2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。
2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出’0’。此方法可以减小功耗并(相对上面2.1)节省2个外部电阻。

### PyCharm 打开文件显示全的解决方案 当遇到PyCharm打开文件显示全的情况时,可以尝试以下几种方法来解决问题。 #### 方法一:清理缓存并重启IDE 有时IDE内部缓存可能导致文件加载异常。通过清除缓存再启动程序能够有效改善此状况。具体操作路径为`File -> Invalidate Caches / Restart...`,之后按照提示完成相应动作即可[^1]。 #### 方法二:调整编辑器字体设置 如果是因为字体原因造成的内容显示问题,则可以通过修改编辑区内的文字样式来进行修复。进入`Settings/Preferences | Editor | Font`选项卡内更改合适的字号大小以及启用抗锯齿功能等参数配置[^2]。 #### 方法三:检查项目结构配置 对于某些特定场景下的源码视图缺失现象,可能是由于当前工作空间未能正确识别全部模块所引起。此时应该核查Project Structure的Content Roots设定项是否涵盖了整个工程根目录;必要时可手动添加遗漏部分,并保存变更生效[^3]。 ```python # 示例代码用于展示如何获取当前项目的根路径,在实际应用中可根据需求调用该函数辅助排查问题 import os def get_project_root(): current_file = os.path.abspath(__file__) project_dir = os.path.dirname(current_file) while not os.path.exists(os.path.join(project_dir, '.idea')): parent_dir = os.path.dirname(project_dir) if parent_dir == project_dir: break project_dir = parent_dir return project_dir print(f"Current Project Root Directory is {get_project_root()}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值