STM32初始化系统时钟
时间: 2024-10-18 12:02:53 浏览: 14
STM32系列微控制器初始化系统时钟通常涉及以下几个步骤:
1. **预分频器设置**(PLCK Prescaler):首先通过RCC_CR寄存器设置HCLK(系统时钟)的基本频率,通常是通过PLCK( PLL Clock Output / HSE Frequency 或者 HSI Frequency)。例如,如果你选择从HSI(高频内部振荡器)作为源,那么需要配置HSIPRE位。
2. **时钟倍频**(Clock Multiplier):接着配置PLLCFGR寄存器,启用PLL并设置M和N因子以倍增系统时钟频率,然后选择合适的SYSCLK源,比如SYSCLK = PLLCFGR.PLLSRC * HSE_Frequency / M / N。
3. **APBx分频器设置**:对于APB1和APB2总线,可以在RCC_APB1ENR和RCC_APB2ENR寄存器中设置相应的时钟预分频系数,如PREDIV1、PREDIV2等,以进一步调整外设时钟。
4. **时钟树配置**:最后,根据应用需求选择适当的时钟源给各个外设模块,这通常涉及到配置RCC_APB1ENR、RCC_APB2ENR和RCC_AHB1ENR等寄存器,以及对应的时钟开关(如GPIOx_CLK_ENABLE())。
在实际编程中,会使用STM32 HAL库提供的函数来简化这些操作,比如`HAL_RCC_OscConfig()`、`HAL_RCC_ClockConfig()`等。完成初始化后,可以使用`__HAL_RCC_GetSysClockFreq()`获取当前系统的主时钟频率。
相关问题
stm32f103系统时钟初始化
在使用STM32F103系列芯片进行系统时钟初始化时,可以参考以下步骤:
1. 在主函数中调用Stm32_Clock_Init函数进行时钟初始化。该函数位于sys.c文件中,可以设置入口参数值为RCC_PLL_MUL9,表示使用PLL输入时钟乘以9的倍数进行时钟配置。\[1\]
2. 使用HAL库时,需要注意HAL库的SystemInit函数并没有进行时钟的初始化配置。因此,我们需要编写自己的时钟配置函数来完成时钟初始化。\[2\]
3. 在时钟配置函数中,可以使用宏定义__HAL_RCC_GPIOA_CLK_ENABLE()来使能GPIOA时钟,__HAL_RCC_DMA1_CLK_ENABLE()来使能DMA1时钟,__HAL_RCC_USART2_CLK_ENABLE()来使能串口2时钟,__HAL_RCC_TIM1_CLK_ENABLE()来使能TIM1时钟等。\[3\]
通过以上步骤,可以完成STM32F103系列芯片的系统时钟初始化。
#### 引用[.reference_title]
- *1* *2* *3* [STM32F103 HAL库基本使用(一)](https://blog.csdn.net/weixin_45488643/article/details/119321607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
STM32F405 系统时钟初始化
STM32F405的系统时钟初始化可以通过以下步骤完成。首先,需要使用STM32CubeMX工具进行配置。在配置中,选择HSE为8Mhz,然后将SYSCLK设置为168Mhz。接下来,将OLED模块连接在PB6和PB7上,并在STM32CubeMX中配置这两个引脚为I2C1_SCL和I2C1_SDA。然后,在左侧的I2C1选项中使能I2C。完成这些配置后,生成工程文件,并在Keil中打开。向工程中添加oled.c、oled.h和oledfont.h文件,这些文件用来存放OLED相关的驱动函数和字库。在main.c文件中,引用oled.h头文件,然后在主函数main()中添加代码来调用相应的函数来初始化OLED模块。具体的代码可以参考oled.c文件中的初始化函数OLED_Init(),该函数包含了一些初始化序列。完成初始化后,可以使用其他函数来显示字符或汉字。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [SI5351A输出任意方波驱动).zip](https://download.csdn.net/download/qq_43600271/11645332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [STM32F405RG开发板控制OLED显示屏](https://blog.csdn.net/weixin_45053407/article/details/118175904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文