单片机
返回首页

关于STM32系统时钟和STM32定时器的使用若干注意点

2017-10-25 来源:eefocus

1. 这里总结一下 SystemInit()函数即上电启动后中设置的默认系统时钟大小:

SYSCLK(系统时钟)=72MHz
AHB 总线时钟(使用 SYSCLK) =72MHz


APB1 总线时钟(PCLK1)=36MHz
APB2 总线时钟(PCLK2) =72MHz


PLL 时钟 =72MHz

 

 

2.关于STM32定时器重要寄存器说明:

1)自动重装载寄存器( TIMx_ARR):(这里所指的重装载是装到影子寄存器,与计数器没关系)该寄存器在物理上实际对应着 2 个寄存器。一个是程序员可以直接操作的,另外一个是程序员看不到的,这个看不到的寄存器在《 STM32参考手册》里面被叫做影子寄存器 ,事实上其实质作用的是影子寄存器。TIMx_CR1 寄存器中 APRE 位的设置 对这两个寄存器是否同步会有影响,当ARPE自动重装载预装载允许位为0值(默认),预装载寄存器值和影子寄存器是连通的(两者之间无缓存),同步更新;而当ARPE位为1值时,预装载寄存器值和影子寄存器是连通的(两者之间存在缓存机制),则只有在每次有“更新事件(UEV)”时,预装载寄存器值才会传到影子寄存器起作用。具体可参参考手册时序图。

2)改变时钟频率当配置完新的预分频器,定时器的时钟是在发生更新后生效

3)查看手册时序图可知,定时器当发生更新事件事,计数器会根据不同模式计数由0(向上模式)或者自动重装载值大小(向下)开始计数

2)UEV事件:(update event) ,即产生更新事件。手册当中说的很详细,简单来讲,就是CR寄存器的UDIS位设置是否是能更新事件(默认0是使能),URS位配置更新事件源。在使能情况下比如定时器溢出时则对应的SR的UIF位会置1。(关于比如UIF更新事件位通串口下状态位一样,其也是中断或者状态查询(但毕竟定时器用查询方式还是感觉没啥用)用的通一个位,这和串口使用TC或者RXNE是一样的道理,我们可通过查库函数实现验证TIM_GetFlagStatus()和TIM_GetITStatus()用的都是SR的同一个位,只不过后者会先检查中断是否使能而已)

3)TIMx_EGR寄存器:这是个实现用软件置位产生各种类型事件的寄存器,与SR不同

 4)关于普通定时器内部输入时钟配置下内部时钟分频因子和分频值的关系:

参见手册关于时钟源和时钟图解释,选用内部时钟即对应的APB1时钟,二内部时钟分频因子是对APB1时钟进行分频,而预分频器的时钟就是内部时钟分频后得到的,这是两者的关系。不过一般情况下我们设置内部时钟的分频因子为1


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章