stm32时钟(一)基础

  • 基本定时器(TIM6-TIM7)

    主要功能:作为通用定时器生成时基,驱动数模转换器

    主要内容

    1. 计数器定时器(TIMx_CNT)(16位)

      计数器从零开始计数,依此递增(只能向上计数),当达到自动重装载定时器值(TIMx_ARR)时,生成计数器上溢事件,并从零开始重新计数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5BOSovXv-1639744350429)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211126200343370.png)]

控制器,控制寄存器的复位,使能等,涉及到寄存器有CR1/2, DIER,EGR,SR。

时钟计数器的频率为 内部时钟频率除以分频器加一,即 (CK_INT / (PSC[15:0] + 1))

上图中,自动重装载定时器框有灰色背景,实际上他是有意义的。即代表自动重装载定时器含有影子寄存器,当启用影子寄存器后,可以起到一个数据缓冲的作用,即当在自动重装载定时器中输入值时,该值不会立即生效,而会在下一个周期生效。ARR寄存器是否启用缓冲取决于TIMx_CR1 中的ARPE(auto-reload preload enable),置一时表示进行缓冲。

  1. 预分频器(TIMx_PSC)(16位)

    对时钟频率进行分配,分频系数介于1 - 65536 之间, 该寄存器也有缓冲,可以随时对其值进行更改,但更改的值在下一周期内生效。

  2. 自动重装载定时器(TIMx_ARR)

    计数器从零开始计数,依此递增(只能向上计数),当达到自动重装载定时器值(TIMx_ARR)时,生成计数器上溢事件,并从零开始重新计数。

    • 高级定时器(TIM1,TIM8)

    ​ 他的时基单元比基本定时器多,依次为

    1. 计数器计数器 CNT
    2. 预分频器计数器 PSC
    3. 自动重装载寄存器 ARR
    4. 重复计时器寄存器 RCR

​ 其中,预分频器计数器 PSC与自动重装载寄存器 ARR比较特殊,他们都可以实现缓冲输入,即在程序运行任何时间都可以改变PSC与ARR的值,但他们不会立刻生效,当发生更新事件时,他们的值才会生效。其中ARR是否缓冲可以由程序控制,具体是TIMx_CR1寄存器的ARPE(自动重载预装载使能位),当其为0时,表示不进行缓冲,寄存器的值直接生效,当其为1,寄存器的值在更新事件后生效。(其实,在stm32中,不仅有ARR,PSC等寄存器,还有与之对应的影子寄存器(ARR、PSC 和 CCRx都含有影子寄存器),程序是根据影子寄存器的值运行的,即程序数据传输如下 PSC,ARR -> 影子寄存器 ->计数器,而之前缓冲的原理就是,只有在发生更新事件时才可以将PSC,ARR 传输到影子寄存器,其他时间不能传输,而没有缓冲时,值可以直接传输到影子寄存器,即直接生效)如图。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IPnubgVf-1639744350430)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20211129191426607.png)]

更新事件,发生更新事件时,将更新所有寄存器且将更新标志(TIMx_SR 寄存器中的 UIF 位)置 1(取 决于 URS 位)。

更新事件来源:

  1. 由溢出更新,当计数器没有使用重复寄存器的值时,当计数器从0到自动重载值(ARR的内容)时,或从自动重载值到0时发生更新;当使用了重复寄存器时,当递增、递减导致溢出的次数达到重复寄存器的值加一时发生更新。
  2. 由软件更新,将EGR寄存器的UG为置1,可以产生更新事件。
  3. 从模式控制器生成更新事件。

防止产生更新事件方法:

  1. 更新禁止,将CR1寄存器的UDIS(update disable)置1可以禁止更新事件,各影子寄存器的值不会改变。
  2. 设置更新请求源,将CR1的URS位置为1即可使通过UG位更新以及通过从模式控制器更新的方法失效,只有溢出才可以产生更新事件。

更新事件的效果:

  1. 可以把数据从预装载寄存器拷贝到相应的影子寄存器(ARR、PSC 和 CCRx),即可使新数据生效。

  2. 将更新标志位(SR寄存器的UIF位)置1(取决于URS位)。

  3. 更新寄存器:

    ​ 重复计数器:重载为RCR寄存器的值

    ​ 自动重装载影子寄存器:重载为ARR的值

    ​ 预分频器的缓冲区:重载为PSC的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值