计数器时钟源提供方案
1、内部时钟(CK_INT)
2、外部时钟模式1:外部输入脚(TIx)
3、外部时钟模式2:外部触发输入(ETR)
4、内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器
计数器模式:
向上计数、向下计数、向上向下双向计数模式

时钟计算方法:
除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的2倍
向上计数:

寄存器:
计数器当前值寄存器 16位 TIMx_CNT
预分频寄存器 16位 TIMx_PSC
CK_CNT的值=Fck_psc/(PSC[15:0]+1)
自动重装载寄存器 16位 TIMx_ARR
控制寄存器1 TIMx_CR1
中断使能寄存器 TIMx_DIER
库函数
定时器参数初始化 void TIM_TimeBaseInit(TIM_TypeDef* TIMx,TIM_TimeBaseInitTypeDef* TimeBaseInitStruct)
定时器使能函数 voidTIM_Cmd(TIM_TypeDef* TIMx,FunctionalState NewState)
定时器中断使能函数 voidTIM_ITConfig(TIm_TypeDef* TIMx,uint16_t tim_it,FunctionalState NewState)
状态标志位获取或清除
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx,uint16_t TIMFLAG)
void TIM_ClearFlag()
ITStatus TIM_GetITStatus()
void TIM_ClearITPendingBit()
定时器中断实现
1、使能定时器时钟
RCC_APB1PeriphClockCmd()
2、定时器初始化,配置ARR,PSC
TIM_TimeBaseInit()
3、开启定时器中断
void TIM_ITConfig()
NVIC_Init()
4、使能定时器
TIM_Cmd()
5、编写中断服务函数
TIMx_IRQHandler()
本文详细介绍了一种基于微控制器的定时器配置方法,包括时钟源的选择(内部时钟、外部时钟)、计数器模式(向上计数、向下计数等),以及如何通过配置寄存器来设置定时器的工作参数,例如预分频寄存器和自动重装载寄存器。此外还介绍了定时器中断的实现步骤。
6534

被折叠的 条评论
为什么被折叠?



