STM32——定时器基本用法

本文详细介绍了STM32微控制器中定时器的基本配置方法,包括定时时间、重装定时器的设置,以及如何通过预分频和计数值计算定时频率。此外,还讲解了如何使用HAL库函数使能定时器中断,并给出了中断回调函数的示例代码。

定时器的配置主要有两个:

定时时间与是否重装定时器
定时频率 = 定时器时钟 / (预分频 +1)/(计数值 +1 )Hz
定时时间 =1/ 定时频率 s
定时器属性配置
然后,打开NVIC中断控制器中的定时器中断。

生成工程后可以HAL_TIM_Base_Start_IT(&htim1);来使能定时器(参数为定时器句柄)。
中断时的操作,用中断回调函数操作void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == htim1.Instance) {

定时器初步用法

调一个较短的时间中断,每次终端数值加1来时间计时功能。

### 定时器时钟分频公式 定时器的时钟分频主要依赖于两个参数:系统的时钟频率 \( F \) 分频系数 \( P \)[^2]。具体来说,系统时钟经过预分频后得到的实际计数频率 \( f \),其计算方式如下: \[ f = \frac{F}{P + 1} \] 其中, - \( F \) 表示系统时钟频率; - \( P \) 是预分频系数。 #### 计算方法 为了实现特定的目标计数频率,可以通过调整预分频系数来达到目的。例如,在给定系统时钟频率的情况下,想要获得较低的计数频率,则可以增大预分频系数;反之亦然。 对于 STM32 芯片而言,当设定好预分频寄存器 `TIM_Prescaler` 后,实际使用的分频值会比该寄存器中的数值多加一,这是因为硬件设计上的规定所致[^4]。 #### 示例 假设有一个基于 ARM Cortex-M 的微控制器,其核心时钟频率为 72 MHz,并希望配置一个定时器使其每秒触发一次中断(即目标周期为 1 秒)。此时可以选择合适的预分频系数使得最终形成的计数频率满足需求。 设预分频系数 \( P = 7199 \),则有: \[ f = \frac{72,000,000\ Hz}{7199 + 1} ≈ 10,000\ Hz \] 这意味着每隔 0.1 ms 就会发生一次计数更新。为了让定时器在一秒钟内完成计数并触发中断,还需要设置自动重载寄存器 `TIM_Period` 来指定最大计数值 N。因此, \[ T = (N + 1)\ /\ f \] 要使 \( T = 1 s \),那么 \( N \) 应等于约 9999 (因为是从零开始计数),这样就能确保定时器在一秒之后溢出并发出中断请求。 ```c // 设置预分频系数 TIM_Prescaler = 7199; htim->Instance->PSC = 7199; // 设置自动重装载值 TIM_Period = 9999; htim->Instance->ARR = 9999; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值