定时器

本文详细介绍了一种基于微控制器的定时器配置方法,包括时钟源的选择(内部时钟、外部时钟)、计数器模式(向上计数、向下计数等),以及如何通过配置寄存器来设置定时器的工作参数,例如预分频寄存器和自动重装载寄存器。此外还介绍了定时器中断的实现步骤。

计数器时钟源提供方案

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()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值