前言
基础定时器的使用以及周期计算是一项非常基础的技术
以下介绍基础定时器的使用和周期运算
基础定时器的周期运算
计算公式
T = \frac{(ARR + 1) * (PSC + 1)}{TCK}
公式介绍
中断周期(T):你设置的中断时间,当你开启中断后,会等待中断周期后然后触发中断。
自动重装载值(ARR):你设置的定时器初始值。
时钟预分频系数(PSC):你设置的定时器预分频。
时钟频率(TCK):你选择的单片机的时钟频率。
运算示例
假如你的时钟频率是72MHZ,如果要在定时器开启后1秒触发中断,计算如下:
$$ 1 = \frac{(ARR + 1) * (PSC + 1)}{72 \times 10^6} $$
$$ \text{则:}(ARR + 1) * (PSC + 1) = 72 \times 10^6 $$
$$ \text{可得:}
\begin{cases}
ARR = 7200 - 1\\
PSC = 10000 - 1\\
\end{cases} $$
$$ \text{则:}(ARR + 1) * (PSC + 1) = 72 \times 10^6 $$
$$ \text{可得:}
\begin{cases}
ARR = 7200 - 1\\
PSC = 10000 - 1\\
\end{cases} $$
基础定时器的使用
CubeMX + HAL库
CubeMX设置
设置RCC
设置时钟
开启定时器
如果是基本定时器TIM6或TIM7等,只需要勾选Activited就使用
开启全局中断,请按下操作步骤,勾选global interrupt即可
代码
以定时器TIM2为例
开启定时器
// 使用此函数开启定时器 HAL_TIM_Base_Start(&htim2);
中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *html) { // 判断是否是TIM2产生的中断 if (html->Instance == TIM2) { // 处理TIM2产生的中断 } }
关闭定时器
// 使用此函数关闭定时器 HAL_TIM_Base_Stop(&htim2);