在STM32单片机里,TIM定时器简单来说就是用来定时的设备,是STM32单片机的一个外设。STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)。
下图为几种定时器的部分分类,在本实验中我们不做详细介绍,在介绍讲解笔记中我们再做介绍。
STM32计时器的输出时间由公式Tout=(Arr+1)*(PSC+1)/Ft计算。其中PSC是预分频系数,Arr是自动装载系数,Ft是对应的总线时钟频率,TIM的时钟频率是72MHz。
在本实验中,我们要求用TIM6实现500ms定时器更新中断,在中断中反转LED0。
接下来我们介绍实验代码。
我们先写头文件btim.h:
#ifndef __BTIM_H
#define __BTIM_H
#include "./SYSTEM/sys/sys.h"
#include "./BSP/LED/led.h"
extern TIM_HandleTypeDef g_timx_handle;
void btim_timx_init(uint16_t arr, uint16_t psc);
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim);
void TIM6_IRQHandler(v