学习笔记1--定时器中断实验的基础知识

定时器的基础知识

STM32F4 的定时器功能十分强大,有 TIME1 和 TIME8 等高级定时器,也有 TIME2—TIM5,TIM9~TIM14 等通用定时器,还有 TIME6 和 TIME7 等基本定时器,总共达 14 个定时器之多。但我们日常主要是以通用定时器为主。

一.定时器相关寄存器

1)计数器当前值寄存器CNT:
这里面进行数据的向上计数和向下计数,储存了当前定时器的计数值。

2)预分频寄存器TIMx_PSC:
将定时器时钟源进行分频输出,降低定时器时钟(CK_CNT)的频率,来获取想要的定时器时钟频率。

3)自动重装载寄存器TIMx_ARR:
存储着重新装载时需要的值,假设向下计数,当CNT中的值到达0时,计时器读取ARR中的值,并赋值给CNT,使之重新计数。而当向上计数时,当CNT中的值达到了ARR中提前设定的值,就会终止本次计数。

4)状态寄存器(TIMx_SR):
该寄存器用来标记当前与定时器相关的各种事件/中断是否发生。

二 定时器的各个参数

1): Prescaler:定时器预分频设置,时钟源经过该分频器才是定时器时钟,它设定 TIMx_PSC 寄存器的值。可设置值范围为 0~65535,实现 1 至 65536 分频。
2): CouterMode:定时器计数方式,及控制定时器是向上计数,向下计数还是中央计数。
3): Period:定时器周期,可设置值为 0~65535。假设在定时器预分频我们已经得到分频后的时钟为 1MHz。Period 的值我们设置为 1000,这样,定时器产生中断的频率为:1MHz/1000=1KHz,即为 1ms 的定时周期。
4): ClockDivision:时钟分频,设置定时器时钟 CK_INT 频率与数字滤波器采样时钟频率分频比。
5): RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可以非常轻松控制输出 PWM 的个数。

三 实验相关代码

  1. 使能相关定时器
HAL_TIM_Base_Start_IT(&htim1); //定时器1使能
  1. 重写中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == htim1.Instance) {
...//定时器1中断业务
}
...
}

补充:

  1. 重写函数
    为了方便他人更好的操作stm32,他的的库函数中有很多以_weak标题的函数,我们可以以这个函数名重写此函数将其覆盖掉。
  2. 回调函数
    回调函数是以另一个函数的指针为参数,旨在调取使用另一个函数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值