STM32HAL定时器详细篇(计数、PWM、输⼊捕获)
l 16位的向上、向下、向上/向下(中⼼对齐)计数模式,⽀持⾃动重装载
l 16位的预分频器
l 每个定时器都有多个独⽴通道,每个通道可⽤于
* 输⼊捕获
* 输出⽐较
* PWM输出
* 单脉冲模式
l ⾼级定时器还可以产⽣互补输出平面设计学习网站
l 可以产⽣中断/DMA请求:
* 更新事件:计数器向上/向下溢出,计数器初始化(通过软或者内部/外部触发)
* 触发事件:计数器启动,停⽌,初始化或者有内部/外部触发计数
* 输⼊捕获
* 输出⽐较
⼀、定时器之计数模式
(⼀) 计数模式
向上计数
计数器从0向上计数(递增)到⾃动装载值,然后再次回到0开始计数,并产⽣⼀个计数溢出事件
向下计数
计数器从⾃动装载值向下计数(递减)到0,然后再次回到⾃动装载值开始计数,并产⽣⼀个计数器向下溢出事件
中央对齐模式(向上/向下计数)
计数器从0开始计数到⾃动装载值-1,并产⽣⼀个计数器溢出事件,然后再向下计数到0+1,并产⽣⼀个计数溢出事件,然后再向上计数。
(⼆)定时器的溢出时间计算
time=(ARR+1)*(PSC+1)/Tclk英语补习
ARR为⾃动装载值
PSC:预分频系数
Tclk:定时器的APB时钟,通常等于系统时钟
如:
tclk为72M
psc为7199
arr为4999
time=(4999+1)*(7199+1)/72 000 000 = 0.5s = 500ms
(三)CubeMX设置
这⾥需要注意的是你所需要使⽤的定时器是挂载在APB1还是APB2。相应的要调节他们时钟频率 选择
选择内部时钟
基础配置,这⾥配置的是1秒计数
desrt是什么意思
l Prescaler (PSC- 16 bits value),预分频器(PSC- 16位值)
l Counter Mode,计数器模式:
up 向上
down 向下
Center Aligned mode 中⼼对齐模式
flippedl Counter Period (AutoReload Register - 16 bits value),重装载值l auto-reload preload,⾃动重装载开启
agl开启更新中断
中断优先级数字越低越⾼
(四)编程记录
中断开启
HAL_StatusTypeDef HAL_TIM_Ba_Start_IT(TIM_HandleTypeDef *htim)
溢出事件回调函数
void HAL_TIM_PeriodElapdCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_PeriodElapdCallback(TIM_HandleTypeDef *htim){
if(htim->Instance == TIM1){
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//单独输出电平取反
}
}
开启中断
HAL_TIM_Ba_Start_IT(&htim1);
除此之外英语⼆、定时器之PWM
PWM即脉冲宽度调制,是⼀种模拟控制⽅式,通常⽤于LED的亮度调节。其实就是快速的⾼低电平变化让⼈感觉不出来。(⼀)了解⼀下HZ的概念
1HZ表⽰1秒变化⼀个周期
在家⽤交流点中:
50HZ表⽰电流每秒钟来回变化50次,⽅向改变100次。
50HZ是50个周期,所以有50个正⽞波形
这个图表⽰的是1HZ变化,1个周期,1个正⽞波
50HZ表⽰每个周期的时间=1S/50=0.02S=20ms
单⽚机检测交流电可以200ms内没有检测到⾼电平,则表⽰⽆输⼊。
在计算机cpu等使⽤1khz=1000hz
在电磁波和机械波等,1Khz=1024hz
在PWM中
hz是频率的单位
1hz 表⽰PWM的周期是⼀秒少儿篮球培训
1Khz表⽰⼀秒钟有⼀千个周期,也就是周期是1ms
1KKhz、1Mhz表⽰⼀秒钟有100万个周期,也就是周期是1us
y秒=1/xHZ
1/1000=0.001S=1ms
1/1000000=0.000001S=1us
如果实现周期是100us
100us=0.0001S=1/0.0001= 10,000HZ
(⼆)PWM配置
ARR为⾃动装载值
CCRx 为捕获⽐较寄存器值
预分频系数决定了PWM的时钟速度
ARR的⼤⼩决定了PWM的周期bottles
CRRx决定了输出有效信号的时间
有效信号:
⾼电平
低电平
PWM模式:
模式1,不管是向上还是向下计数,当计数值⼩于重装载值是输出有效电平。模式2,不管是向上还是向下计数,当计数值⼩于重装载值是输出⽆效电平。
PWM周期计算
防火小知识Fpwm = 100M / ((arr+1)*(psc+1))(单位:Hz)
Fpwm = 100M / (arr+1)/(psc+1)(单位:Hz)
祝福语 英文arr 是计数值