打印
[STM32F1]

STM32F103的时钟配置源码学习记录

[复制链接]
278|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qsrg51|  楼主 | 2023-11-23 23:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
   本文记录下看完正点原子战舰版的时钟配置视频后的理解,仅用作备忘。
      时钟的配置源码在文件system_stm32f10x.c中。程序先通过判断使用的f10芯片的种类,选择你要的系统时钟频率SYSCLK。我用的芯片系统频率最高为72Mhz,芯片容量为大容量型,所以预编译后选择的是SYSCLK_FREQ_72MHz  72000000。



  下面这段代码在时钟配置中没什么用,只是在以后的程序中可以通过SystemCoreClock来读出系统时钟的频率。




使用特权

评论回复
沙发
qsrg51|  楼主 | 2023-11-23 23:57 | 只看该作者
  下面代码通过宏定义来选择配置系统时钟的函数,上边函数定义了SYSCLK_FREQ_72MHz,所以程序执行void SetSysClockTo72(void)。跳转到这个函数

使用特权

评论回复
板凳
qsrg51|  楼主 | 2023-11-23 23:58 | 只看该作者
  下面这段函数不重要,直接跳过

使用特权

评论回复
地板
qsrg51|  楼主 | 2023-11-23 23:58 | 只看该作者
      这三行代码首先是讲AHB总线时钟等于系统时钟,再将APB2上时钟等于HCLK的一分频,APB1时钟等于HCLK的二分频。结果即为HCLK=72MHz,PCLK2=72MHz,PCLK1=36MHz.。刚好为各自总线上允许的最高频率。

使用特权

评论回复
5
qsrg51|  楼主 | 2023-11-23 23:58 | 只看该作者
  再看下图,跳过它上面的代码。else下的代码是通过配置寄存器设置锁相环,从锁相环出来的频率为9倍的频外部高速时钟。

使用特权

评论回复
6
qsrg51|  楼主 | 2023-11-23 23:58 | 只看该作者
   最后使能锁相环PLL,等PLL准备好后,将PLL作为系统时钟的来源。

      

使用特权

评论回复
7
qsrg51|  楼主 | 2023-11-23 23:59 | 只看该作者
     看懂时钟配置源代码,首先要弄懂时钟系统框图,两个时钟图差不多,但标注有点区别

使用特权

评论回复
8
qsrg51|  楼主 | 2023-11-23 23:59 | 只看该作者

使用特权

评论回复
9
qsrg51|  楼主 | 2023-11-23 23:59 | 只看该作者

使用特权

评论回复
10
qsrg51|  楼主 | 2023-11-23 23:59 | 只看该作者

使用特权

评论回复
11
qsrg51|  楼主 | 2023-11-23 23:59 | 只看该作者

使用特权

评论回复
12
小夏天的大西瓜| | 2023-11-29 23:00 | 只看该作者
时钟配置是学习单片机的基础

使用特权

评论回复
13
jf101| | 2023-11-30 09:29 | 只看该作者
一般STM32开始就是IO和时钟配置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

333

帖子

1

粉丝