1. stm32时钟源分析
stm32f4有四个时钟源可供选择,分别是:
HSE(外部高速),HSI(内部高速), LSE(外部低速), LSL(内部低速)。
1.1 外部时钟源一般由外挂晶振产生
LSE为32.767KHz晶振输入。
HSE为8MHz或16MHz,实验用的是16MHz
1.2 内部时钟源一般为内部RC震荡电路
LSI 为内部32.767KHz的RC电路
HSI 为内部16MHz的RC电路
2. stm32时钟源配置
四个时钟源中,只有HSI和HSE能作为整个系统的时钟源,LSI和LSE只作为看门狗,RTC及外部输出的时钟源。
HSI和HSE频率都不高,所以ARM设计了PLL(锁相环)来进行倍频,把HSI和HSE频率拉高到百兆以上。所以能为整个系统提供时钟源的就多了个PLL的高速时钟源。
下面来分别讨论这三个时钟源的配置过程。
2.1 stm32高速内部时钟源HSI配置
HSI时钟是内部时钟源,系统复位后会自动选择这个时钟源,所以复位后,根据时钟图可以看到,system clock和PLL输入时钟都为16MHz。具体代码如下:
void SystemInit(void)
{
/* Reset the RCC clock configuration to the default reset state ------------*/
/* Set HSION bit */
RCC->CR |= (uint32_t)0x00000001;
/* Reset CFGR register */
RCC->CFGR = 0x00000000;
/* Reset HSEON, CSSON and PLLON bits */
RCC->CR &= (uint32_t)0xFEF6FFFF;
/* Reset PLLCFGR register */
RCC->PLLCFGR = 0x24003010;
/* Reset HSEBYP bit */
RCC->CR &= (uint32_t)0xFFFBFFFF;
/* Disable all interrupts */
RCC->CIR = 0x00000000;
/* Configure the Vector Table location add offset address ------------------*/
SCB->VTOR = FLASH_BASE | 0x00 ; /* Vector Table Relocation in Internal FLASH */
}
2.2 stm32高速外部时钟源HSE配置
HSE为外部晶振,需要手动进行配置,系统复位后HSI首先工作,如需使用外部HSE时,要通过寄存器选择,进行切换即可,外部晶振产生的时钟要比内部电路产生的时钟精度高很多,所以一般都会选外部时钟。配置过程如下:
void SystemInit(void)
{
/* Reset the RCC clock configuration to the default reset state ------------*/
RCC->CR = (uint32_t)0x00000001; //reset
RCC->CR |= (uint32_t)(1<<16); //open HSE
while((RCC->CR & (uint32_t)(1<<17))==0) ; //wait for HSE work
SCB->VTOR = FLASH_BASE | (0x00); /* Vector Table Relocation in Internal FLASH */
}
2.3 stm32高速PLL时钟配置
高速PLL时钟的设置稍微复杂一点,根据PLL倍频计算公式,首先设置好PLLM,PLLN,PLLQ,经过倍频公式:
PLL_output_clk = PLL_input_clk × (PLLN ÷ PLLM) ÷ PLLQ
就可以获得输出的频率,当然这些参数需在使能PLL前进行设置。
这里必须要注意一个点:那就是在切换system clock之前,必须配置I-Cache D-Cache以及Latency,否则PLL是设置不成功的。因为system clock由16MHz这样的低速切换到60MHz以上的高速时钟时候,会影响到指令和数据读取总线时序,所以在切换时钟之前必须设置好Latency。具体Latency数值参考下图:
void SystemInit(void)
{
/* Reset the RCC clock configuration to the default reset state ------------*/
RCC->CR = (uint32_t)0x00000001; //reset
RCC->CR |= (uint32_t)(1<<16); //open HSE
while((RCC->CR & (uint32_t)(1<<17))==0) ; //wait for HSE work
RCC->PLLCFGR |= (uint32_t)(1<<22); //select HSE as PLL source clock HSECLK is 16MHz
RCC->PLLCFGR |= (uint32_t)(16<<0); //select PLLM==16
RCC->PLLCFGR |= (uint32_t)(192<<6); //select PLLN==192 VCOCLK= HSECLK*(PLLN/PLLM)=16*(192/16)=192
RCC->PLLCFGR |= (uint32_t)(3<<24); //set PLLQ==3 PLLVOUTCLK = VCOCLK/PLLQ= 192/3 = 64MHz
RCC->CR |= (uint32_t)(1<<24); //open PLL
while((RCC->CR & (uint32_t)(1<<25))==0) ; //wait for PLL work
FLASH->ACR |=(9<<1)|(10<<1)|(0<<2); //enable I-Cache D-Cache and 2 Latency
RCC->CFGR |= (uint32_t)(2<<0); //select PLL as the system clock
while((RCC->CFGR & (2<<2))==0); //wait the PLL clock
RCC->CFGR |= (uint32_t)(0<<4); //AHB presc is 1 AHBCLK=64MHz
RCC->CFGR |= (uint32_t)(4<<10); //APB1 presc is 2 APB1CLK=32MHz
RCC->CFGR |= (uint32_t)(4<<13); //APB2 presc is 2 APB2CLK=32MHz
SCB->VTOR = FLASH_BASE | (0x00); /* Vector Table Relocation in Internal FLASH */
}
SCB->VTOR表示中断向量表位于flash起始地址出,说明我们boot选择的是从flash启动,如需从ram启动这里需要修改地址,这个内容后续再讨论。
3. 结论
一般情况下,设置HSE为时钟源,并配置启动PLL进行倍频,并将PLL选为system clock的时钟源。这样能达到系统最大性能。
上一篇:【STM32F103攻城笔记】内部晶振HSI倍频设置系统时钟
下一篇:RCC—使用 HSE HSI 配置时钟树梳理(在STM32平台下)
推荐阅读最新更新时间:2024-11-10 16:00
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 LTC3726EGN 的参考设计
- AM2F-1207SH30Z 7.2V 2W DC-DC 转换器的典型应用
- LT1172CT、12V/1.25A 负至正降压-升压转换器的典型应用
- 使用 LT3045IMSE 并联线性稳压器的典型应用
- 使用 Analog Devices 的 LT1209 的参考设计
- 3S均衡板 ETA3000
- 基于VL812的USB3.0集线器
- FAN21SV04 TinyBuck 4A、24V 单输入集成同步降压稳压器的典型应用
- ADP5054-EVALZ,用于 ADP5054 4 通道电源管理单元 (PMU) 的评估板
- Cube-443_示波镊子
- 科学家研发基于AI的身份验证工具 可保护车辆免受网络攻击威胁
- Microchip推出广泛的IGBT 7 功率器件组合,专为可持续发展、电动出行和数据中心应用而设计
- 面向未来驾驶体验 博世推出新型微电子技术
- 英飞凌与马瑞利合作 利用AURIX™ TC4x MCU系列推动区域控制单元创新
- 5C超充,该怎么卷?
- 《2025年度中国汽车十大技术趋势》正式揭晓!你最看好哪个?
- Microchip推出新型VelocityDRIVE™软件平台和车规级多千兆位以太网交换芯片,支持软件定义汽车
- 英特尔中国正式发布2023-2024企业社会责任报告
- can转485数据是如何对应的
- MCU今年的重点:NPU和64位
- 西门子白皮书下载《物联网在电子制造行业的成功应用》
- 有奖活动|泰克半导体材料与器件测试技术【热门应用篇】
- 看视频赢京东卡 PI汽车专用解决方案学习中心正式上线
- ST AMG SensorTile开发大赛驾到,重磅大奖与知识兼得,速来~
- 大学必备设计课表出炉,先睹为快!
- 2021 Digi‑Key KOL 视频系列:新型智能曝光算法在人脸识别中的应用
- 打卡世健的ADI之路首站“工业自动化站”,赢Kindle、《新概念模拟电路》
- 学视频,晒WEBENCH® 设计方案,免费获得TI样片!
- 一起“充电”,DIY自己专属应急灯
- 直播报名:TI 用于感测应用、带可配置信号链元素的新型MSP430™ MCU,报名直播赢双重好礼!