定时器

计数器时钟源提供方案

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

阅读更多
个人分类: STM32
上一篇STM32中断
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭