其他分享
首页 > 其他分享> > stm32之通用定时器

stm32之通用定时器

作者:互联网

文章目录


stm32f10x系列最多有8个定时器

3种定时器
1.高级定时器
2.基本定时器
3.通用定时器

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定时器中断

时钟选择
计数器时钟可以由下列时钟源提供:
1.内部时钟(CK_INT)(默认)
2.外部时钟模式1:外部输入脚 (TIx)
3.外部时钟模式2:外部触发输入(ETR)
4.内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定时器中断相关寄存器

1.计数器当前值寄存器CNT
在这里插入图片描述
2.预分频寄存器PSC
在这里插入图片描述
3.自动重装载寄存器ARR
在这里插入图片描述
4.控制寄存器1 CR1
在这里插入图片描述
5.DMA中断使能寄存器DIER
在这里插入图片描述

定时器中断库函数

1.定时器初始化函数
void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
在这里插入图片描述
在这里插入图片描述
预分频系数
计数模式
自动装载值

在这里插入图片描述
2.定时器使能函数
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
在这里插入图片描述

3.定时器中断使能函数
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

在这里插入图片描述
4.状态标志位的获取和清除
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
在这里插入图片描述

定时器中断的配置

1.使能定时器时钟
2.初始化定时器
3.开启定时器中断,配置中断
4.使能定时器
5.编写中断服务函数

溢出时间计算
在这里插入图片描述
延时500ms
ARR设置为4999,PSC设置为7199,TCLK是时钟周期

在这里插入图片描述

PWM输出

在这里插入图片描述
PWM原理
就是设置一个阈值,当大于阈值时输出高电平,低于阈值输出低电平
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

PWM库函数

1.初始化函数
在这里插入图片描述
在这里插入图片描述
2.设置比较值函数
在这里插入图片描述

3.使能输出比较预装载
在这里插入图片描述
4.使能自动重装载的预装载寄存器允许位

pwm配置步骤

在这里插入图片描述

在这里插入图片描述

注:如果是普通定时器,不需要加上
在这里插入图片描述
对于TIM1和TIM8高级定时器则需要加上

标签:使能,定时器,通用,中断,TIMx,stm32,TIM,寄存器
来源: https://blog.csdn.net/qq_41262681/article/details/95892667