stm32f103寄存器配置系统时钟
时间: 2025-01-01 07:28:14 浏览: 19
### STM32F103 系统时钟寄存器配置
对于STM32F103微控制器而言,系统时钟的初始化和配置至关重要。这不仅影响到系统的性能还涉及到外设的工作频率。
#### 配置外部高速振荡器(HSE)
为了提高精度以及稳定性,在许多应用场合下会选用外部晶振来提供更稳定的时基信号。通过向`RCC->CR`寄存器写入特定值可以开启HSE:
```c
// 使能 HSE
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
```
此命令将会启动外部高速振荡电路[^2]。
#### 设置闪存接口参数
当CPU运行速度较快时,可能需要调整Flash访问模式以匹配处理能力。具体做法如下所示:
```c
// 启用预取缓冲区
FLASH->ACR |= FLASH_ACR_PRFTBE;
// Flash 2等待周期
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
```
上述代码片段设置了两个重要的属性——启用预取功能并设定合适的延迟时间,从而优化了读取效率[^3]。
#### 调整总线与时钟分配
接下来要做的就是合理规划各个总线之间的关系及其对应的分频系数。这里给出了一种常见的方案用于设置APB1低速总线的速度为36 MHz:
```c
// APB1 总线分频因子设置为2
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
```
这意味着AHB上的每一个脉冲都会被分割成两次传递给APB1设备,最终实现了目标速率的要求。
#### 初始化锁相环(PLL)
最后一步则是激活PLL并将之指定为主系统时钟源之一。这样做能够获得更高的工作频率范围,并且保持良好的稳定性和准确性。
```c
// 开启 PLL
RCC->CR |= RCC_CR_PLLON;
// 切换至PLL作为SYSCLK
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
```
至此完成了整个过程的关键部分描述,当然实际项目里还需要考虑更多细节比如校准、保护机制等方面的内容。
阅读全文