【STM32 HAL库】TIM定时器与CubeMX配置

前言

本文为笔者学习TIM定时器知识的总结与复盘,基于keysking的系列视频,欢迎大家纠正文中错误

TIM定时器基本理论

定时器的本质就是计数器!

定时器的基本计数功能可以通过不同计数方式的组合,实现普通定时、脉冲捕获、测量PWM占空比、输出PWM、编码器测速等功能

定时器的基本作用

设定一个时间,时间到了后,通过中断通知STM32执行某些程序

定时器分类

基本定时器

  • 基本的时间测量
  • 产生周期性中断

通用定时器

  • 基本定时器功能
  • 输入捕获
  • 输出比较 生成PWM

高级定时器

  • 通用定时器功能
  • 高精度工业电机控制

定时器的外部时钟与从模式

在这里插入图片描述
从模式:
外部时钟模式1
以外部输入信号作为外部时钟源
复位模式
计数器更新 重新计数 触发更新中断
门模式
根据电平 暂停或继续计数
触发模式
启动计数 常配合单脉冲

TIM基本定时器

理论

基本定时功能与周期性产生中断
在这里插入图片描述

影子寄存器
预分频器与自动重装载寄存器控制着他们的影子寄存器
在当前计数周期完成后 寄存器将新的值给到影子寄存器中 更新完成
在这里插入图片描述

应用

CubeMX配置

在这里插入图片描述
开启TIM中断
若要每过一个计时周期进入一次中断并完成某项任务 则需开启TIM中断
在这里插入图片描述

定时器溢出时间 T(一个计时周期
在这里插入图片描述
触发事件选择见该Blog

一般情况下 :
激活 --> 根据计时需求配置PSC ARR --> 使能自动重装载寄存器的影子寄存器 --> 其他默认

Keil5代码

启动定时器计时功能 + 开启定时器中断

 HAL_TIM_Base_Start_IT(TIM_Handle TypeDef* htim);

“定时器溢出”中断回调函数

void HAL TIM PeriodElapsedCallback (TIM HandleTypeDef *htim) {
	if(htim == &htim4){
		HAL UART Transmit IT(&huart2,(uint8 t*)data, strlen(data));}
}

其他函数

//获取当前计数器的值
__HAL_TIM_GET_COUNTER(TIM_Handle TypeDef* htim);
//设置计数器的值
__HAL_TIM_SET_COUNTER(TIM_Handle TypeDef* htim);
//获取重装载寄存器的值
__HAL_TIM_GET_AUTORELOAD(TIM_Handle TypeDef* htim);
//设置重装载寄存器的值
__HAL_TIM_SET_AUTORELOAD(TIM_Handle TypeDef* htim);
//设置预分频器的值
__HAL_TIM_SET_PRESCALER(TIM_Handle TypeDef* htim);

输入捕获

作为精确的计时器,检测到输入信号电平变化(上升沿或下降沿,并记录当时时间点(记录到捕获寄存器中供程序读取

理论

在这里插入图片描述

应用

CubeMX配置

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

Keil5代码

开启输入捕获

HAL_TIM_IC_Start(TIM_Handle TypeDef* htim,uint32_t Channel);

开启输入捕获 + 开启输入捕获中断

HAL_TIM_IC_Start_IT(TIM_Handle TypeDef* htim,uint32_t Channel);

“输入捕获”中断回调函数

void HAL_TIM_IC_Capturecallback(TIM HandleTypeDef *htim){
		//养成好习惯 先判断中断源是否来自TIM1的通道4
	if (htim == &htim1 && htim>Channel==HAL_TIM_ACTIVE_CHANNEL 4){
		//逻辑代码
	}	
}

PWM

理论

在这里插入图片描述

应用

CubeMX配置

在这里插入图片描述

Keil5代码

开启PWM

HAL_TIM_PWM_Start(TIM_Handle TypeDef* htim,uint32_t Channel);

停止PWM

HAL_TIM_PWM_Stop(TIM_Handle TypeDef* htim,uint32_t Channel);

设置比较寄存器值

__HAL_TIM_SET_COMPARE(TIM_Handle TypeDef* htim,uint32_t Channel,COMPARE)
  • 34
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值