stm32时钟相关

发布者:清新心情最新更新时间:2018-12-03 来源: eefocus关键字:stm32  时钟相关 手机看文章 扫描二维码
随时随地手机看文章

我在原创的基础又从另一位博主处引用了一些内容。

 

 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32。 


下面是从网上找的一个STM32时钟框图,比《STM32中文参考手册》里面的是中途看起来清晰一些: 


    
   

重要的时钟:PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 


      1、HSI:高速内部时钟信号 stm32单片机内带的时钟 (8M频率)     精度较差 
     

2、HSE:高速外部时钟信号  精度高 来源(1)HSE外部晶体/陶瓷谐振器(晶振)  (2)HSE用户外部时钟          

      

3、LSE:低速外部晶体 32.768kHz 主要提供一个精确的时钟源 一般作为RTC时钟使用  
在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口。 

涉及的寄存器: 

RCC 寄存器结构,RCC_TypeDeff,在文件“stm32f10x_map.h”中定义如下:  


typedef struct  
{  
vu32 CR;                  //HSI,HSE,CSS,PLL等的使能  
vu32 CFGR;              //PLL等的时钟源选择以及分频系数设定 
vu32 CIR;                // 清除/使能 时钟就绪中断 
vu32 APB2RSTR;      //APB2线上外设复位寄存器 
vu32 APB1RSTR;      //APB1线上外设复位寄存器 
vu32 AHBENR;         //DMA,SDIO等时钟使能 
vu32 APB2ENR;       //APB2线上外设时钟使能 
vu32 APB1ENR;      //APB1线上外设时钟使能 
vu32 BDCR;           //备份域控制寄存器 
vu32 CSR;             
} RCC_TypeDef; 

可以对上上面的时钟框图和RCC寄存器来学习,对STM32的时钟系统有个大概的了解,然后对照我们的《STM32不完全手册》的系统时钟配置函数void Stm32_Clock_Init(u8 PLL)一同来学习。 


关键字:stm32  时钟相关 引用地址:stm32时钟相关

上一篇:STM32之中断管理
下一篇:STM32定时器相关介绍(主要是有UEV更新事件介绍)

推荐阅读最新更新时间:2024-03-16 16:19

STM32如何通过FSMC点亮LCD
FSMC是Flexible static memory controller(可变静态存储控制器)的简称,是STM32系列采用的一种新型的存储器扩展技术,支持SRAM、Nor Flash、LCD、PSRAM、NAND Flash、PC Card等。只在某些芯片上有,使用前要查看对应的手册确定。 在FSMC的角度来看,外部存储分成了4个固定的大小为256MB的bank。 Bank1分成了4个子bank,每一个64MB大小,并且每个bank都有独立的片选,用来控制Nor Flash、RAM、PSRAM。Bank2和Bank3用来控制NAND Flash。Bank4控制PC Card。 不同的Bank共享了地址、数据、读、写
[单片机]
<font color='red'>STM32</font>如何通过FSMC点亮LCD
基于STM32+华为云IOT设计的智能温室大棚监控系统
一、项目背景 当前文章介绍基于STM32单片机的智能温室大棚监控系统,当前系统由温湿度传感器、二氧化碳传感器、光敏电阻传感器、土壤湿度传感器笨时温宏大棚中内作物生长环境因子主要包括温度、湿度、光度、土壤湿度传感、二氧化碳浓度等参数进行监控。 采集数据,判断是否在系统设定上限、下限范围,如果超出了上限下限蜂鸣器报警、通风系统、LED补光系统、水泵系统就会启也可以通过手机APP和华为云华为云物联网云平台对温室大棚中的数据进行修改和设定新的数据。 本设计整体主要采用STM32单片机为核心、温湿度传感器、二氧化碳传感器、光敏电阻传感器、土壤湿度传感器、通风系统、LED补光系统、水泵系统组成。 (1) 温湿度传感器: 主要对温室大棚
[单片机]
基于STM32+华为云IOT设计的智能温室大棚监控系统
STM32中 warning: #61-D: integer operation result is out of range
由于编译器默认signed int即32位有符号整数类型,而1 31实际为0x80000000, 这样就有可能改写了符号位(最高位) 依此类推,(2 30),(3 29)...等都会出现编译警告问题. 解决办法为: ((unsigned int)1 31),((unsigned int)2 30),...
[单片机]
STM32 USB学习笔记2
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library STM32Cube库中提供了一些有关USB的例程,在其工程目录下的Applications目录中,这里打开STM3210E_EVAL目录,可以看到如下例程: 这里选取一个简单的例子CDC_Standalone,为一个USB通信例程,具体实现是一个USB转串口的功能,相当于USB串口线。把示例里面的inc和src目录下的文件拷贝到新建工程中,这里是把跟usb通信相关的文件放到了vcp目录下。文件目录结构如下: 其中BSP目录很简单,由于所购
[单片机]
STM32单片机在KIEL4配置开发中的设置
开发环境:KIEL4,芯片STM32F103VCT6。函数库VC3.5 1.配置开发环境。 2.Option for Target,主要是C/C++和debug两个部分设置。 3.变量和函数名自动补全以及中文乱码设置。 4.逻辑分析仪。信号不存在或者不能出图形。
[单片机]
<font color='red'>STM32</font>单片机在KIEL4配置开发中的设置
创建keil工程并点亮STM32板子的LED灯
打开之前创建的工程,如下图所示(keil工程的创建在之前的文章中有,不了解的同学可以翻一下上一篇文章。) (上图是已经建立完成的工程) 然后,再次打开我们之前下载的对应开发板版本的例程包中的点亮LED灯的例程 (路径为:en.stsw-stm32077 \STM32L1xx_StdPeriph_Lib_V1.3.1 \project\STM32L1xx_StdPeriph_Examples \GPIO \IOToggle) 找到mian.c文件打开,全选复制里面的内容 再回到我们之前已经创建完毕的工程中,打开mian.c文件清空,并将GPIO文件中的main.c里面的内容粘贴到我们工程的mian.c中。 此时可以看到有很多
[单片机]
STM32 大小端序 与 堆栈及其增长方向分析
栈增长和大端/小端问题是和CPU相关的两个问题. 1,首先来看:栈(STACK)的问题. 函数的局部变量,都是存放在 栈 里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以 战舰 stm32 开发板 为例,在startup_stm32f10x_hd.s里面,开头就有: Stack_Size EQU 0x00000800 表示栈大小是0X800,也就是2048字节.这样,CPU处理任务的时候,函数局部变量做多可占用的大小就是:2048字节,注意:是所有在处理的函数,包括函数嵌套,递归,等等,都是从这个 栈 里面,来分配的. 所以,如果一个函数的局部变量过多,比如在函数里面定义一个u8
[单片机]
<font color='red'>STM32</font> 大小端序 与 堆栈及其增长方向分析
ST发布STM32超值型微控制器
意法半导体(纽约证券交易所代码:STM),发布全新超低价格的32位微控制器的产品细节。新产品将STM32的先进的工业标准内核的优点延伸到低性能设备应用市场,为开发人员提供更多的选择机会,不再受专有处理器架构的制约。 迄今为止,如需升级原有的16位设计,获得更高性能和应用灵活性,设计人员不得不选择针对更加复杂应用设计的高端微控制器。为改善这种情况,意法半导体推出新的STM32超值型微控制器,整合24MHz ARM® Cortex™-M3处理器内核和专门为16位应用优化的外设特性,例如,家庭娱乐设备、家电和工业设备。在24MHz时钟和零等待状态闪存访问条件下,STM32超值型的性能达到30 DMIPS,超过了大多数16位
[单片机]
ST发布<font color='red'>STM32</font>超值型微控制器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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