精简通俗易懂的STM32时钟系统小结

发布者:bemaii最新更新时间:2021-05-08 来源: eefocus关键字:STM32  时钟系统  振荡器 手机看文章 扫描二维码
随时随地手机看文章

在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口。


使用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()


关键字:STM32  时钟系统  振荡器 引用地址:精简通俗易懂的STM32时钟系统小结

上一篇:STM32点亮第一个LED使用keil for ARM MDK 软件仿真
下一篇:通过学习USART1深入STM32F107VCT6的串口通信

推荐阅读最新更新时间:2024-11-07 11:22

stm32 USART_IT_IDLE中断 一帧数据
USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断。也可以叫做一包数据 USART_IT_IDLE和USART_IT_RXNE区别 当接收到1个字节,会产生USART_IT_RXNE中断 当接收到一帧数据,就会产生USART_IT_IDLE中断 清中断方法 //USART_IT_RXNE USART_ClearITPendingBit(USART1, USART_IT_RXNE); //USART_IT_IDLE USART1- SR; //先读SR寄存器 USART1- DR; //再读DR寄存器 使用举例 u8 count; u8 flag; void uart_init(u32
[单片机]
<font color='red'>stm32</font> USART_IT_IDLE中断 一帧数据
【32位MCU】9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介
9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介 一,准备EWARM + AN2557软件包 1,在http://www.mcu123.com/news/Soft/embsof/arm/201001/514.html 上 下载 IAR Embedded Workbench for ARM version 5.41 (2010.1.5更新) 软件 CD-EWARM-5411-1760_mcu123.zip http://esoft.mcu123.com/MCU123_temp_20100103@/ARM/CD-EWARM-5411-1760_mcu123.zip 相关文件 IAR_EWARM5.4和谐文
[单片机]
STM32串口通信中使用printf发送数据配置方法
在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含 stdio.h (标准输入输出头文件)。 2、在main文件中重定义 fputc 函数 如下: // 发送数据 int fputc(int ch, FILE *f) { USART_SendData(USART1, (unsigned char) ch);// USART1 可以换成
[单片机]
基于ENC424J600的以太网与串行接口转换技术
引言     随着Internet的发展和应用,越来越多的设备需要接入网络以实现远程控制或资源共享。以太网接口布线方便,通信带宽较宽,可达100 Mb/s甚至1000Mb/s。嵌入式系统由于具有体积小、价格低、专用性能高的优势,被广泛应用于各种电子设备和工业测试设备中。随着嵌入式系统与网络的日益紧密结合,在嵌入式系统中引入TCP/IP协议栈已成为嵌入式系统领域的重要研究方向。     本义在以太网接口实现基本数据传输的基础上将其转换成其他通用串行接口(如SPI、UART、CAN),更利于应用在广泛的工业控制领域中。目前市面上的以太网控制芯片大多功耗高、功能复杂,不适合用在中低端的嵌入式系统中。之前Microchip推出的芯片ENC2
[嵌入式]
基于STM32的税控器方案
随着金税工程的推广,税控市场将得到迅猛发展,税控器作为四大税控产品之一,其市场份额不容小觑,税控厂家需要为产品的性能、成本做多方面考量。之前各个厂家的税控器方案,可能因为成本的考虑选择了8位 单片机 ,也有因为性能扩展的需要选择16位、32位MCU作为税控器主控芯片。今天, ST (意法半导体公司)延续了其之前基于STR7的税控器体系架构,并借鉴在STR9银税一体机方案中的经验,推出了一款采用STM32这一高性能、低成本芯片的税控器方案。 方案介绍 与以往方案(图1)对比,STM32方案(图2)结构简单,模块功能化,减少了外部数据总线的数量,有效减小制板面积,很好地保证了系统的可靠性及安全性。ST还提供详细的设计报告,无论是
[单片机]
基于<font color='red'>STM32</font>的税控器方案
STM32 SDIO 报错 SD_RX_OVERRUN
使用STM32官方SDIO 的SDCARD驱动的时候,以前单任务的时候没有出现这种错误,现在使用多任务的时候经常出现,表现为读取文件的时候没有问题,经常点击屏幕的时候就会出问题,最后通过仿真找到出错点就是读取数据向SD卡发送CD17命令时出现 SD_RX_OVERRUN这个错误,产生原因为读取FIFO溢出. 通过仿真与测试发现问题主要出现在读取过程中不能打断,也就是临界点. 在两个读取函数里面 SD_Error SD_ReadMultiBlocks(u32 addr, u32 *readbuff, u16 BlockSize, u32 NumberOfBlocks); SD_Error SD_ReadBlock(u32 addr
[单片机]
STM32 flash 读写操作
一、Flash简介   通过对stm32内部的flash的读写可以实现对stm32的编程操作。   stm32的内置可编程Flash在许多场合具有十分重要的意义。如其支持ICP(In Circuit Programming,在电路编程;在线编程)特性使得开发人员对stm32可以警醒调试开发,可以通过JTAG和SWD接口对stm32进行程序烧写;支持IAP(In Application Programming,在应用中编程)使得开发人员可以在stm32运行程序的时候对其内部程序进行更新操作。对一些对数据安全有要求的场合,可编程FLASH可以结合stm32内部唯一的身份标识实现各种各样的防破解方案。并且stm32的FLASH在一
[单片机]
沃布尔振荡器电路
沃布尔振荡器电路中A和B组成2Hz振荡器,成为C和D门,C和D组成一个1kHz的振荡器,驱动TIP31扬声器驱动器。
[模拟电子]
沃布尔<font color='red'>振荡器</font>电路
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved