[其他ST产品] STM32时钟配置

[复制链接]
621|6
 楼主| grfqq325 发表于 2023-9-17 23:02 | 显示全部楼层 |阅读模式

本文基于STM32F105系列,STM32F1系列的单片机应该都使用,其他单片机没有实际调试过。

时钟树 267056507146ad2342.png
47007650714ee26947.png

 楼主| grfqq325 发表于 2023-9-17 23:02 | 显示全部楼层
一、设置外部晶振频率(HSE)
根据硬件实际所外接的晶振频率,在软件内外部晶振频率。
文件:stm32f10x.h,找到如下代码:
759746507150472d9b.png
STM32F10X_CL是互联型STM32单片机(STM32F105\STM32F107)。若是互联型STM32单片机,则修改117行对应的频率,默认是25MHz,此处由于我用的外部晶振是8MHz,因此改为8MHz。其它型号的单片机,则修改下面119行的频率。
 楼主| grfqq325 发表于 2023-9-17 23:03 | 显示全部楼层
二、设置系统时钟频率(SYSCLK)
文件:system_stm32f10x.c 3371765071552ecc34.png
以_VL结尾的是超值型STM32单片机(STM32F100),此处我们是STM32F105芯片,因此使用else内的代码。系统时钟频率可根据需要配置,这里我们使用默认的72MHz。
 楼主| grfqq325 发表于 2023-9-17 23:04 | 显示全部楼层
三、设置HCLK\PCLK1\PCLK2
HCLK\PCLK1\PCLK2的频率,通过配置AHB预分频器、APB1预分频器和APB2预分频器的分频系数来实现。
文件:system_stm32f10x.c
找到与系统时钟频率对应的主频配置函数SetSysClockTo72(),这里以72MHz为例。此函数内有如下代码: 816886507159030d40.png
 楼主| grfqq325 发表于 2023-9-17 23:05 | 显示全部楼层
四、设置PREDIV1CLK
此部分设置PREDIV2、PLL2MUL、PREDIV1SCR、PREDIV1四个功能块,1035和1036行先对寄存器相应位进行清零,1037和1038行按需求进行配置。 292196507159eabd3a.png
 楼主| grfqq325 发表于 2023-9-17 23:05 | 显示全部楼层
五、设置PLLCLK
此部分设置PLLSCR、PLLMUL功能块,同样是先清零再配置。 76244650715aa3f8f9.png
 楼主| grfqq325 发表于 2023-9-17 23:05 | 显示全部楼层
六、选择系统时钟的时钟源
此部分设置SW,先清零再设置。 7688650715b560b52.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

687

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部