×
单片机 > 单片机程序设计 > 详情

STM32初识——通用定时器配置

发布时间:2020-08-31 发布时间:
|

通用定时器的益处时间

 Tout= ((arr+1)*(psc+1))/Tclk;



TIM3时钟使能

TIM3 是挂载在 APB1 之下,所以我们通过 APB1 总线下的时钟使能函数来使能 TIM3。调用的函数是:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能



初始化定时器参数,设置自动重装值,分频系数,计数方式。

在库函数中,定时器的初始化参数是通过初始化函数 TIM_TimeBaseInit 实现的:

voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

第一个参数是确定是哪个定时器,这个比较容易理解。第二个参数是定时器初始化参数结构体指针,结构体类型为 TIM_TimeBaseInitTypeDef

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_TimeBaseStructure.TIM_Period = 5000;//设置自动重载计数周期值

TIM_TimeBaseStructure.TIM_Prescaler =7199;//参数 TIM_Prescaler是用来设置分频系数的

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;//设置时钟分频因子

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//参数 TIM_CounterMode 是用来设置计数方式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);



设置TIM3_DIER允许更新中断。

因为我们要使用TIM3的更新中断,寄存器的相应位便可使能更新中断。在库函数里面定时器中断使能是通过 TIM_ITConfig 函数来实现的:

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

第一个参数是选择定时器号,这个容易理解,取值为 TIM1~TIM17。

第二个参数非常关键,是用来指明我们使能的定时器中断的类型,定时器中断的类型有很多种,包括更新中断TIM_IT_Update触发中断TIM_IT_Trigger以及输入捕获中断等等。

第三个参数就很简单了,就是失能还是使能。



TIM3中断优先级设置。

在定时器中断使能之后,因为要产生中断,必不可少的要设置 NVIC 相关寄存器,设置中

断优先级。



使能TIM3 。

光配置好定时器还不行,没有开启定时器,照样不能用。我们在配置完后要开启定时器,通过TIM3_CR1的CEN位来设置。在固件库里面使能定时器的函数是通过TIM_Cmd函数来实现的:

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)



编写中断服务函数。



读取中断状态寄存器的值判断中断类型的函数

ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t)

该函数的作用是,判断定时器TIMx的中断类型TIM_IT是否发生中断if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){}



固件库中清除中断标志位的函数

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT)

该函数的作用是,清除定时器 TIMx 的中断 TIM_IT 标志位。TIM_ClearITPendingBit(TIM3, TIM_IT_Update );



关键字:STM32  通用定时器  配置 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机制作超级流水灯