STM32F103ZET6 时钟(1)

STM32 的时钟设计显得较为繁琐,时钟树如图所示:

1. 系统上电时刻,默认使用内部 HSI (8M)作为时钟源。HSI时钟信号由内部 8MHz 的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

上电后,可以通过选择时钟源来切换时钟到HSE。

2. 内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。针对 USB 的时钟,必须提供有效稳定的48MHz时钟。

3. LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。

4. LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。

5. 时钟安全系统(CSS)。时钟安全系统可以通过软件被激活。一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。如果HSE时钟发生故障,HSE振荡器被自动关闭,时钟失效事件将被送到高级定时器(TIM1和TIM8)的刹车输入端,并产生时钟安全中断CSSI,允许软件完成营救操作。此CSSI中断连接到Cortex™-M3的NMI中断(不可屏蔽中断)。

6. 时钟输出。STM32 微控制器允许输出时钟信号到外部MCO引脚。SYSCLK/HSI/HSE/除2的PLL时钟


其余APB1/APB2/ADC/SDIO/等等的时钟配置约束,参考时钟树的说明进行配置即可。

### STM32F103ZET6 时钟配置使用 STM32CubeMX 教程 #### 配置环境准备 为了确保STM32F103ZET6时钟能够被正确设置,在启动项目之前,需确认已安装最新版本的STM32CubeMX工具。该软件提供了图形化界面来简化微控制器外设初始化过程。 #### 创建新项目并选择目标芯片 打开STM32CubeMX应用程序后,点击新建工程按钮,随后在弹出的选择窗口中输入项目名称,并挑选对应的MCU型号——即本案例中的`STM32F103ZET6`[^1]。 #### 设置系统核心频率和其他参数 进入主界面后,通过左侧栏目的“Pinout & Configuration”,可以找到System Core下的RCC (Reset and Clock Control)模块。这里允许调整PLL(Phase-Locked Loop),HSE(High Speed External oscillator), LSI(Low-Speed Internal RC Oscillator)等重要组件的工作状态以及输出频率。对于大多数应用而言,默认提供的8MHz外部高速晶振配合内部PLL倍频至72MHz是一个常见且稳定的选择。 #### 自定义高级特性 除了基本设定之外,还可以进一步探索更多细节选项,比如启用低功耗模式下自动切换到LSI作为RTC实时时钟源;或是当HSI可用时将其强制用于调试会话期间等等。这些功能有助于优化特定应用场景下的性能表现或能耗水平。 #### 生成初始化代码 完成上述所有配置项之后,转到菜单栏上的“Project”-> “Generate Code”。此时STM32CubeMX将会依据所选平台自动生成必要的头文件(.h)和源码实现(.c),其中包括了针对选定时钟方案的具体实施方法。注意保存好生成的结果以便后续编译链接操作。 ```cpp // 示例:部分由STM32CubeMX生成的时钟配置函数调用 HAL_RCC_OscConfig(&Rcc_OscInitStruct); HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值