完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
STM32F1 时钟树
时钟源 HSI:高速内部时钟,RC振荡器,频率为8MHz HSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz LSI:低速内部时钟,RC振荡器,频率为40kHz LSE:低速外部时钟,接频率为32.768kHz的石英晶体 LSI可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。LSE也可用来通过程序选择驱动RTC。 内部即指芯片已经集成,外部即指需要设计PCB时接入 锁相环:这个东西可以将输入频率进行放大然后输出,比如说输入1MHz,设置倍频为3倍,最后就能输出3MHz的信号。STM32的锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 时钟配置 主要 SYSCLK:系统时钟 HCLK:AHB总线时钟 PCLK2:APB2总线时钟 PCLK1:APB1总线时钟 库函数的标准配置:PCLK2 = HCLK = SYSCLK = PLLCLK = 72M,PCLK1 = HCLK/2 = 36M APB1和APB2搭载的外设如下图所示: 其它 USB时钟 USB 时钟是由 PLLCLK 经过 USB 预分频器得到,分频因子可以是:[1,1.5],具体的由时钟配置寄存器 CFGR 的位 22:USBPRE 配置。USB 的时钟最高是 48M,根据分频因子反推过来算,PLLCLK 只能是 48M 或者是 72M。一般我们设置 PLLCLK=72M,USBCLK=48M。USB 对时钟要求比较高,所以 PLLCLK 只能是由 HSE 倍频得到,不能使用 HSI 倍频。 Cortex 系统时钟 Cortex 系统时钟由 HCLK 8 分频得到,等于 9M,Cortex 系统时钟用来驱动内核的系统定时器 SysTick,SysTick 一般用于操作系统的时钟节拍,也可以用做普通的定时。 ADC 时钟 ADC 时钟由 PCLK2 经过 ADC 预分频器得到,分频因子可以是[2,4,6,8],具体的由时钟配置寄存器 CFGR 的位 15-14:ADCPRE[1:0]决定。很奇怪的是怎么没有 1 分频。ADC时钟最高只能是 14M,如果采样周期设置成最短的 1.5 个周期的话,ADC 的转换时间可以达到最短的 1us。如果真要达到最短的转换时间 1us 的话,那 ADC 的时钟就得是 14M,反推 PCLK2 的时钟只能是:28M、56M、84M、112M,鉴于 PCLK2 最高是 72M,所以只能取 28M 和 56M。 RTC 时钟、独立看门狗时钟 RTC 时钟可由 HSE/128 分频得到,也可由低速外部时钟信号 LSE 提供,频率为32.768KHZ,也可由低速内部时钟信号 HSI 提供,具体选用哪个时钟由备份域控制寄存器BDCR 的位 9-8:RTCSEL[1:0]配置。独立看门狗的时钟由 LSI 提供,且只能是由 LSI 提供,LSI 是低速的内部时钟信号,频率为 30~60KHZ 直接不等,一般取 40KHZ。 MCO 时钟输出 MCO 是 microcontroller clock output 的缩写,是微控制器时钟输出引脚,在 STM32 F1系列中 由 PA8 复用所得,主要作用是可以对外提供时钟,相当于一个有源晶振。MCO 的时钟来源可以是:PLLCLK/2、HSI、HSE、SYSCLK,具体选哪个由时钟配置寄存器CFGR 的位 26-24:MCO[2:0]决定。除了对外提供时钟这个作用之外,我们还可以通过示波器监控 MCO 引脚的时钟输出来验证我们的系统时钟配置是否正确。 基于标准库的设置代码 使用标准库的模板工程,在系统启动的时候,statup_stm32f10x_hd.s 已经调用 SystemInit()函数把系统时钟初始化成 72MHZ,SystemInit()在库文件:system_stm32f10x.c 中定义。然后再进入main函数。 如果我们想把系统时钟设置低一点或者超频的话,可以修改底层的库文件,即改动SystemInit()函数。但是为了维持库的完整性,可以在按照标准库的方法启动后进入main函数中时,再自己写个时钟初始化函数将系统时钟重新配置。 HSI 设置系统时钟函数跟 HSE 设置系统时钟函数在原理上是一样的,有一个区别的地方就是,HSI 必须 2 分频之后才能作为 PLL 的时钟来源,所以使用 HSI 时,最大的系统时钟 SYSCLK 只能是 HSI/216=416=64MHZ。 |
|
|
|
STM32F1 时钟树
时钟源 HSI:高速内部时钟,RC振荡器,频率为8MHz HSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz LSI:低速内部时钟,RC振荡器,频率为40kHz LSE:低速外部时钟,接频率为32.768kHz的石英晶体 LSI可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。LSE也可用来通过程序选择驱动RTC。 内部即指芯片已经集成,外部即指需要设计PCB时接入 锁相环:这个东西可以将输入频率进行放大然后输出,比如说输入1MHz,设置倍频为3倍,最后就能输出3MHz的信号。STM32的锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。 时钟配置 主要 SYSCLK:系统时钟 HCLK:AHB总线时钟 PCLK2:APB2总线时钟 PCLK1:APB1总线时钟 库函数的标准配置:PCLK2 = HCLK = SYSCLK = PLLCLK = 72M,PCLK1 = HCLK/2 = 36M APB1和APB2搭载的外设如下图所示: 其它 USB时钟 USB 时钟是由 PLLCLK 经过 USB 预分频器得到,分频因子可以是:[1,1.5],具体的由时钟配置寄存器 CFGR 的位 22:USBPRE 配置。USB 的时钟最高是 48M,根据分频因子反推过来算,PLLCLK 只能是 48M 或者是 72M。一般我们设置 PLLCLK=72M,USBCLK=48M。USB 对时钟要求比较高,所以 PLLCLK 只能是由 HSE 倍频得到,不能使用 HSI 倍频。 Cortex 系统时钟 Cortex 系统时钟由 HCLK 8 分频得到,等于 9M,Cortex 系统时钟用来驱动内核的系统定时器 SysTick,SysTick 一般用于操作系统的时钟节拍,也可以用做普通的定时。 ADC 时钟 ADC 时钟由 PCLK2 经过 ADC 预分频器得到,分频因子可以是[2,4,6,8],具体的由时钟配置寄存器 CFGR 的位 15-14:ADCPRE[1:0]决定。很奇怪的是怎么没有 1 分频。ADC时钟最高只能是 14M,如果采样周期设置成最短的 1.5 个周期的话,ADC 的转换时间可以达到最短的 1us。如果真要达到最短的转换时间 1us 的话,那 ADC 的时钟就得是 14M,反推 PCLK2 的时钟只能是:28M、56M、84M、112M,鉴于 PCLK2 最高是 72M,所以只能取 28M 和 56M。 RTC 时钟、独立看门狗时钟 RTC 时钟可由 HSE/128 分频得到,也可由低速外部时钟信号 LSE 提供,频率为32.768KHZ,也可由低速内部时钟信号 HSI 提供,具体选用哪个时钟由备份域控制寄存器BDCR 的位 9-8:RTCSEL[1:0]配置。独立看门狗的时钟由 LSI 提供,且只能是由 LSI 提供,LSI 是低速的内部时钟信号,频率为 30~60KHZ 直接不等,一般取 40KHZ。 MCO 时钟输出 MCO 是 microcontroller clock output 的缩写,是微控制器时钟输出引脚,在 STM32 F1系列中 由 PA8 复用所得,主要作用是可以对外提供时钟,相当于一个有源晶振。MCO 的时钟来源可以是:PLLCLK/2、HSI、HSE、SYSCLK,具体选哪个由时钟配置寄存器CFGR 的位 26-24:MCO[2:0]决定。除了对外提供时钟这个作用之外,我们还可以通过示波器监控 MCO 引脚的时钟输出来验证我们的系统时钟配置是否正确。 基于标准库的设置代码 使用标准库的模板工程,在系统启动的时候,statup_stm32f10x_hd.s 已经调用 SystemInit()函数把系统时钟初始化成 72MHZ,SystemInit()在库文件:system_stm32f10x.c 中定义。然后再进入main函数。 如果我们想把系统时钟设置低一点或者超频的话,可以修改底层的库文件,即改动SystemInit()函数。但是为了维持库的完整性,可以在按照标准库的方法启动后进入main函数中时,再自己写个时钟初始化函数将系统时钟重新配置。 HSI 设置系统时钟函数跟 HSE 设置系统时钟函数在原理上是一样的,有一个区别的地方就是,HSI 必须 2 分频之后才能作为 PLL 的时钟来源,所以使用 HSI 时,最大的系统时钟 SYSCLK 只能是 HSI/216=416=64MHZ。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1847浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
609浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
503浏览 3评论
507浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
488浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:05 , Processed in 0.366220 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号