先看一张STM32时钟系统框图

在STM32中,有五个时钟源,分别是为HSI、HSE、LSI、LSE、PLL。

HSI内部高速RC振荡时钟,8MHz;HSE,外部高速时钟,4M__16MHZ;LSI,内部低速RC 时钟,40KHZ;LSE外部低速时钟,32.768KHz;PLL锁相环倍频,由图可知,可以选择HSE/2、HSI/2、HSE,倍频系数可以是2——16,但是不要超过72MHz。

SYSCLK系统时钟,由图可知可以选择HSE、HSI、 PLLCLK的一种,最高72MHz,通过AHB分频器后送给各个模块,AHB分频可以选择1、2、4、8、16、 64、128、 256 、512,AHB分频后送给5大模块使用。

   1 HCLK ,也就是AHB总线、内核、内存和DMA使用的HCLK时钟

2   通过8分频后送给Cortex的系统定时器时钟

3    直接送给Cortex的空闲运行时钟FCLK

4   送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路   定时器(Timer)2、3、4倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2、3、4使用

5 送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频

注意定时器的倍频器,当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口。

配上一个简单的自己的时钟配置程序,使用库函数。

void RCC_Configuration(void)//时钟配置
{
 ErrorStatus HSEStartUpStatus;//判断标志变量
 
 RCC_HSEConfig(RCC_HSE_ON);//使用外部时钟
 HSEStartUpStatus = RCC_WaitForHSEStartUp();//等待外部时钟稳定
 if(HSEStartUpStatus== SUCCESS)//如果外部晶振启动成功
 {
    RCC_HCLKConfig(RCC_SYSCLK_Div1);//HCLK(AHB时钟)值等于系统时钟
  RCC_PCLK1Config(RCC_HCLK_Div2);//PCLK1(APB1时钟)值等于HCLK的一半,最高不超过36MHz
  RCC_PCLK2Config(RCC_HCLK_Div1);//PCLK2(APB2时钟)值等于HCLK,最高可是72MHz
  FLASH_SetLatency(FLASH_Latency_2);//FLASH时序控制,SYSCLK0~24MHz Latency=0.SYSCLK25~48MHz Latency =1.SYSCLk 48~72MHz  Latency=2
  FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//开启FLASH预取指功能
  RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//HSE提供系统时钟,9倍频,也就是72MHz
  RCC_PLLCmd(ENABLE);//启动PLL
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//等待PLL稳定
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//系统时钟来自PLL输出
  while(RCC_GetSYSCLKSource()!=0x08);//等待系统时钟稳定
 }
}

注意stm32定时器的倍频器相关推荐

  1. STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结

    STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...

  2. 关闭 定时开启_【话说定时器系列】之四:STM32定时器更新事件及案例分享

    STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...

  3. stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗

    点击上方蓝色字体,关注我们 本博文简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器.基本定时 ...

  4. stm32定时器中断类型分析

    一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...

  5. STM32 - 定时器基础应用说明 - 04 - N-pulse waveform generation using one-pulse mode - 用OPM模式产生N次脉冲

    前言:N-PULSE模式,就是PLUS模式+Mask(利用UDIS的屏蔽) Repetition的特性: 那么首先-N-PULSE可以定制波形的各个方面,然后,将这个定制进行重复,那不就是可以无限的定 ...

  6. STM32 - 定时器的设定 - 基础- 07 - 6-step PWM generation - 6步长PWM的产生 - COM Event的解释

    前言:本节主要讲互补输出的步长设定问题,同时引入了一个重要的参数COM,这个再诸多STM32的手册里面都过于分散,在本文有一个比较完备的小结: When complementary outputs a ...

  7. STM32 - 定时器的设定 - 基础- 06 - OCxREF signal - Clearing the OCxREF signal on an external event

    OCxREF signal 作为捕捉比较的定制化参考波形在对输出波形的配置上占有巨大的影响.如何将这个信号和外部输入的事件联系起来,能给系统的设计带来更多的可选择性. The OCxREF signa ...

  8. STM32 - 定时器的设定 - 基础 01.1 - Repetition counter

    前言:Repetition counter是一个STM32增强的计数器功能,有很多用途,本文尝试进行简单阐述: 我们理解为,就是定时器溢出再增加一个倍率rate 的控制.注意是倍率,也就是如果是定时1 ...

  9. stm32捕获占空比_「话说定时器系列」之六:STM32定时器输入捕获话题

    STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...

最新文章

  1. 人工智能正在向具有“高情商”发展
  2. today便利 java_在Today今天便利店吃饭,你的要求可以再高一点
  3. python判断日期是星期几_python 判断日期是星期几
  4. leveldb使用指南
  5. mysql 5.6 command line client闪退_MySQL 5.6 Command Line Client 点开闪退解决方法
  6. 带属性的向前声明:warning: type attributes are honored only at type definition
  7. 成功激活windows server 2008 sp2!
  8. 杭电计算机14年笔试真题
  9. 正则表达式 (入门)
  10. VC6删除项目中的文件
  11. (十)vue实例对象介绍
  12. 北京地铁行业远期规划与建设融资规划报告2022版
  13. 只查看ett.txt文件(100行)内第20行到30行的内容
  14. Word2016中文字间距突然变大了是怎么回事?
  15. SpringBoot 报错 Unrecognized field
  16. 一次HTTP链接会产生多少数据流量
  17. 车牌识别关键技术-车牌定位
  18. 把握SDN研发方向,展望未来发展趋势
  19. ubuntu 硬盘管理工具
  20. 拉格朗日粒子扩散模式FLEXPART,在大气污染溯源中的应用

热门文章

  1. ReferenceError: plus is not defined (提示: 请在plus ready后再调用plus api)
  2. CodeBlocks安装与使用入门
  3. 软件或网站(学习 工作 生活)
  4. 排列计算公式,公式含义
  5. nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2
  6. MacOS 10.14 Mojave黑苹果安装教程
  7. Java之多线程详解
  8. K8S数据采集组件metrics-server安装
  9. 还在用机械式的继电器?要不试下这款光电固态继电器?
  10. 【Python网络爬虫】前程无忧网爬虫+可视化