完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>
在
STM32
中,有五个时钟源,为
HSI
、
HSE
、
LSI
、
LSE
、
PLL
。
、HSI 是高速内部时钟, RC 振荡器,频率为 8MHz 。 ②、 HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz 。 ③、 LSI 是低速内部时钟, RC 振荡器,频率为 40kHz 。 ④、 LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。 ⑤、 PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2 、 HSE 或者 HSE/2 。倍频可选择为 2~16 倍,但是其输出频率最大不得超过 72MHz 。 其中40kHz 的 LSI 供独立看门狗 IWDG 使用,另外它还可以被选择为实时时钟 RTC 的时钟源。另外, 实时时钟RTC 的时钟源还可以选择 LSE ,或者是 HSE 的 128 分频。 RTC 的时钟源通过 RTCSEL[1:0] 来选择。 STM32 中有一个全速功能的 USB 模块,其串行接口引擎需要一个频率为 48MHz 的时钟源。该时钟源只能从 PLL 输出端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需要使用 USB 模块时, PLL 必须使能,并且时钟频率配置为 48MHz 或 72MHz 。 另外,STM32 还可以选择一个时钟信号输出到 MCO 脚 (PA8) 上,可以选择为 PLL 输出的 2 分频、 HSI 、 HSE 、或者系统时钟。 系统时钟SYSCLK ,它是供 STM32 中绝大部分部件工作的时钟源。系统时钟可选择为 PLL 输出、 HSI 或者 HSE 。系统时钟最大频率为 72MHz ,它通过 AHB 分频器分频后送给各模块使用, AHB 分频器可选择 1 、 2 、 4 、 8 、 16 、 64 、 128 、 256 、 512 分频。其中 AHB 分频器输出的时钟送给 5 大模块使用: ①、送给 AHB 总线、内核、内存和 DMA 使用的 HCLK 时钟。 ②、通过 8 分频后送给 Cortex 的系统定时器时钟。 ③、直接送给 Cortex 的空闲运行时钟 FCLK 。 ④、送给 APB1 分频器。 APB1 分频器可选择 1 、 2 、 4 、 8 、 16 分频,其输出一路供 APB1 外设使用 (PCLK1 ,最大频率 36MHz) ,另一路送给定时器 (timer)2 、 3 、 4 倍频器使用。该倍频器可选择 1 或者 2 倍频,时钟输出供定时器 2 、 3 、 4 使用。 ⑤、送给 APB2 分频器。 APB2 分频器可选择 1 、 2 、 4 、 8 、 16 分频,其输出一路供 APB2 外设使用 (PCLK2 ,最大频率 72MHz) ,另一路送给定时器 (Timer)1 倍频器使用。该倍频器可选择 1 或者 2 倍频,时钟输出供定时器 1 使用。另外, APB2 分频器还有一路输出供 ADC 分频器使用,分频后送给 ADC 模块使用。 ADC 分频器可选择为 2 、 4 、 6 、 8 分频。 在以上的时钟输出中,有很多是带使能控制的,例如AHB 总线时钟、内核时钟、各种 APB1 外设、 APB2 外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。 需要注意的是定时器的倍频器,当APB 的分频为 1 时,它的倍频值为 1 ,否则它的倍频值就为 2 。 连接在APB1( 低速外设 ) 上的设备有:电源接口、备份接口、 CAN 、 USB 、 I2C1 、 I2C2 、 UART2 、 UART3 、 SPI2 、窗口看门狗、 Timer2 、 Timer3 、 Timer4 。注意 USB 模块虽然需要一个单独的 48MHz 时钟信号,但它应该不是供 USB 模块工作的时钟,而只是提供给串行接口引擎 (SIE) 使用的时钟。 USB 模块工作的时钟应该是由 APB1 提供的。 连接在APB2( 高速外设 ) 上的设备有: UART1 、 SPI1 、 Timer1 、 ADC1 、 ADC2 、所有普通 IO 口 (PA~PE) 、第二功能 IO 口。深圳专业 STM32 技术学习郭老师 QQ754634522 使用HSE 时钟,程序设置时钟参数流程: 1 、将 RCC 寄存器重新设置为默认值 RCC_DeInit; 2 、打开外部高速时钟晶振 HSE RCC_HSEConfig(RCC_HSE_ON); 3 、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp(); 4 、设置 AHB 时钟 RCC_HCLKConfig; 5 、设置高速 AHB 时钟 RCC_PCLK2Config; 6 、设置低速速 AHB 时钟 RCC_PCLK1Config; 7 、设置 PLL RCC_PLLConfig; 8 、打开 PLL RCC_PLLCmd(ENABLE); 9 、等待 PLL 工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) 10 、设置系统时钟 RCC_SYSCLKConfig; 11 、判断是否 PLL 是系统时钟 while(RCC_GetSYSCLKSource() != 0x08) 12 、打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd() |
|
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览1 评论
1962 浏览0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览1 评论
小黑屋|手机版|Archiver|德赢Vwin官网(湘ICP备2023018690号)
GMT+8, 2024-11-19 14:04, Processed in 0.512835 second(s), Total 60, Slave 47 queries .
Powered by德赢Vwin官网 网
© 2015bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号