stm32的时钟

举报
dz小伟 发表于 2022/11/02 12:25:08 2022/11/02
【摘要】 1、时钟树 2、刨析 2.1、系统时钟(不配置默认内部8MHz,如寄存器版点亮LED)3个时钟来源(HSI、HSE、PLL倍频) 2.1.1、HSI时钟内部时钟8MHz(不稳定)2个走向1、到SW2、经过2分频到PLLSRC 2.1.2、HSE时钟外部晶振(4-16MHz)4个走向1、到PLLXTPRE2、2分频到PLLXTPRE3、到SW4、128分频到RTCSELCSS:时钟监视系统(...

1、时钟树

在这里插入图片描述

2、刨析

2.1、系统时钟(不配置默认内部8MHz,如寄存器版点亮LED)

3个时钟来源(HSI、HSE、PLL倍频)

2.1.1、HSI时钟

内部时钟8MHz(不稳定)
2个走向
1、到SW
2、经过2分频到PLLSRC

2.1.2、HSE时钟

外部晶振(4-16MHz)
4个走向
1、到PLLXTPRE
2、2分频到PLLXTPRE
3、到SW
4、128分频到RTCSEL
CSS:时钟监视系统(外部时钟不工作,自动切换内部时钟)

2.1.3、PLL时钟

3个选择PLLXTPRE和PLLSRC(内部2分频,外部,外部2分频)

2.2、RTC和看门狗时钟

2.2.1、RTC时钟来源

1.高速外部HSE128分频
2.低速外部LSE
3.低俗内部LSI

2.2.2、看门狗时钟来源

3.低速内部LSI

2.3内部时钟输出(PA8)

1.系统时钟
2.高速内部
3.高速外部
4.PLL的2分频

3、库函数SystemInit()分析

3.1内部8MHz高速脉冲开启

在这里插入图片描述
在这里插入图片描述

3.1.1 RCC_CR

RCC时钟基地址强制转换为TypeDef指针类型
在这里插入图片描述
因为结构体成员都是32位(4字节),所以字节从CR一直往下都是4个字节4个字节的分配,符合寄存器的地址
所以可以直接引用改地址内容
在这里插入图片描述

3.2条件编译

在这里插入图片描述
因为是HD的,所以不满足CL,跳过编译,编译else后面语句
个人感觉没什么用(&运算F不变,0清0)
因为复位值就是0
在这里插入图片描述

3.3PLL设置

在这里插入图片描述
1.CR寄存器16、19、24位清0,HSE振荡器关闭、时钟监测器关闭、PLL关闭
2.CR寄存器18位清0,外部4-16MHz振荡器没有旁路
3.CFGR寄存器16、17、18、19、20、21、22位清0,HSI振荡器时钟经2分频后作为PLL输入时钟、
在这里插入图片描述

3.4清除中断标志位

在这里插入图片描述
因为是HD,所以前面都不会执行,直接执行最后
CIR寄存器16、17、18、19、20、23位置1,
在这里插入图片描述
在这里插入图片描述

3.5函数SetSysClock()

条件编译直接进入函数
在这里插入图片描述
前面定义了72MHz(可以换成想要的时钟,换宏定义)
条件编译直接进入函数72MHz
在这里插入图片描述
在这里插入图片描述

3.6函数SetSysClockTo72(void)

1.定义2个32位的变量,CR寄存器16位置1,HSE振荡器开启。
在这里插入图片描述
2.等待17位外部3-25MHz时钟就绪 或 到定时时间结束,跳出while
判断外部时钟是否就绪,就绪变量赋1,否则赋0
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.判断是否打开就绪
闪存编程手册
1启用预取缓冲区。2清零。3两个等待状态
设置分频系数:HCLK=72,PCLK2=72,PCLK1=36(sysclk系统时钟72)
在这里插入图片描述
在这里插入图片描述
4.条件编译
设置PLL 9倍,系统时钟、HCLK、PCLK2 72MHz,PCLK1 36MHz
在这里插入图片描述
5.使能PLL
等待完成
设置PLL为系统时钟
等待设置完成
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。