定时器的应用

这次来记录下定时器的应用
定时器有可以有好几个应用的场景
1.作为基本定时器计时
2.作为PWM输出或者比较输出
3.作为捕获功能
4.计算外部脉冲数
5.用定时器更新来触发其它的事件
6用定时器来级联,就是可以用定时器的更新来作为另一个定时器的时钟
7在HAL库中还可以用作us级延时函数

主要说几个少见的场景
1.用定时器的更新来触发GPIO的DMA
2.用定时器的更新来触发SPI的写DMA和读DMA
3.用定时器的更新来触发ADC的采集

首先我们看定时器的框图在这里插入图片描述
可以看到有好几个时钟来源 ,内部时钟,ETR,ITR都可以作为时钟源来驱动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同时,也有DMA事件
在这里插入图片描述
例如更新事件,当发生更新事件后就会触发DMA请求。
H7的定时器也类似,功能更强大点

基本定时器计时
目前最基础的就是使用定时器计时。
一般会配置Prescaler和Period
例如定时器的时钟是72MHz,则意味着每1个时钟的时间是1/72000000S。
定时器的配置Prescaler可以配置成7200-1,则分频后的频率为72000000/7200=10000,意味着每1个时钟的时间是时间为0.1毫秒。
当CNT达到10000时,便是1S时间了。

在void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure)中可以看到,配置的
Period最后会赋值给ARR寄存器,也就是自动装载寄存器


 /* Set the Autoreload value */
  TIMx->ARR = (uint32_t)Structure->Period ;

因此,我们把Period设置为5000.并且开启定时器更新中断。等到计数器数值为5000时,则时间为0.5S,产生了中断。

手册上写在递增计数模式下,计数器从 0 计数到自动重载值( TIMx_ARR 寄存器的内容),然后重新
从 0 开始计数并生成计数器上溢事件。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值