当前位置: 首页 > news >正文

通用定时器学习记录

简介

通用定时器:TIM2/TIM3/TIM4/TIM5

主要特性:16位递增、递减、中心对齐计数器(计数值0~65535)

16位预分频器(分频系数1~65536)

可用于触发DAC、ADC

在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求

4个独立通道,可用于:输入捕获、输出比较、输出PWM、单脉冲模式

使用外部信号控制定时器且可实现多个定时器互连的同步电路

支持编码器和霍尔传感器电路等

通用定时器框图

计数器时钟源

1.内部时钟(CK_INT):来自外设总线APB提供的时钟

2.内部时钟模式1:外部输入引脚(TIx),来自定时器通道1或者通道2引脚的信号

3.外部时钟模式2:外部触发输入(ETR),来自可以复用为TIMx_ETR的IO引脚

4.内部输入触发(ITRx):用于与芯片内部其他通用/高级定时器级联

计数器时钟源寄存器设置方法

外部时钟模式1

外部时钟模式2

使用一个定时器作为另一个定时器的预分频器

通用定时器输出比较部分框图介绍

捕获比较通道1的主电路

通用定时器输出PWM原理

假设:递增计数模式

ARR:自动重装载寄存器的值

CCRx:捕获/比较寄存器x的值

当CNT<CRRx,IO输出0

当CNT=CRRx,IO输出1

PWM周期或频率由ARR决定,PWM占空比由CRRx决定

PWM原理

通用定时器PWM输出实验配置步骤

1.配置定时器基础工作参数    HAL_TIM_PWM_Init()

2.定时器PWM输出MSP初始化   HAL_TIM_PWM_MspInit()  配置NVIC、CLOCK、GPIO等

3.配置PWM模式/比较值等   HAL_TIM_PWM_ConfigChannel()

4.使能输出并启动计数器    HAL_TIM_PWM_Start()

5.修改比较值控制占空比(可选)  __HAL_TIM_SET_COMPARE()

6.使能通道预装载(可选)  __HAL_TIM_ENABLE_OCxPRELOAD()

相关HAL库函数介绍

关键结构体介绍

输入捕获框图

捕获比较通道1的输入部分

输入捕获脉宽测量原理(测量高电平脉宽为例)

递增计数模式

ARR:自动重装载寄存器的值

CCRx1:t1时间点CCRx的值

CCRx2:t2时间点CCRx的值

高(低)电平期间,计时器计数个数:N*(ARR+1)+CCRx2

输入捕获配置步骤

1.配置定时器基础工作参数  HAL_TIM_IC_Init()

2.定时器输入捕获MSP初始化  HAL_TIM_IC_MspInit() 配置NVIC、CLOCK、GPIO等

3.配置输入通道映射、捕获边沿   HAL_TIM_IC_ConfigChannel()

4.设置优先级,使能中断  HAL_NVIC_SetPriority()   HAL_NVIC_EnableIRQ()

5.使能定时器更新中断  __HAL_TIM_ENABLE_IT()

6.使能捕获、捕获中断及计数器  HAL_TIM_IC_Start_IT()

7.编写中断服务函数  TIMx_IRQHandler()等   ---> HAL_TIM_IRQHandler() 

8.编写更新中断和捕获回调函数 

HAL_TIM_PeriodElaspsedCallback()     HAL_TIM_IC_CaptureCallback()

相关HAL库函数介绍

关键结构体介绍

脉冲计数原理

外部时钟源模式1

外部时钟源模式2

脉冲计数配置步骤

1.配置定时器基础工作参数  HAL_TIM_IC_Init()

2.定时器输入捕获MSP初始化  HAL_TIM_IC_MspInit() 配置NVIC、CLOCK、GPIO等

3.配置定时器从模式等   HAL_TIM_SlaveConfiSynchro()

4.使能输入捕获并启动计数器  HAL_TIM_IC_Start()

5.获取计数器的值  __HAL_TIM_GET_COUNTER()

6.设置计数器的值  __HAL_TIM_SET_COUNTER()

相关HAL库函数介绍

关键结构体介绍

http://www.lryc.cn/news/536965.html

相关文章:

  • 科技之光闪耀江城:2025武汉国际半导体产业与电子技术博览会5月15日盛大开幕
  • vue开发06:前端通过webpack配置代理处理跨域问题
  • ⚡️《静电刺客的猎杀手册:芯片世界里的“千伏惊魂“》⚡️
  • 【云安全】云原生-K8S(三) 安装 Dashboard 面板
  • Spring Boot 常用依赖详解:如何选择和使用常用依赖
  • C++ 设计模式-组合模式
  • 【Spring Boot】Spring 魔法世界:Bean 作用域与生命周期的奇妙之旅
  • 移远通信边缘计算模组成功运行DeepSeek模型,以领先的工程能力加速端侧AI落地
  • Cables Finance 构建集成LST与外汇RWA永续合约的综合性DEX
  • AI大模型(DeepSeek)科研应用、论文写作、数据分析与AI绘图学习
  • 【算法工程】解决linux下Aspose.slides提示No usable version of libssl found以及强化推理模型的短板
  • 什么是HTTP和HTTPS?它们之间有什么区别?
  • 【一文读懂】TCP与UDP协议
  • 数据结构 树的存储和遍历
  • Jenkins项目CICD流程
  • EasyRTC轻量级SDK:智能硬件音视频通信资源的高效利用方案
  • AI Agent未来走向何方?
  • Visual Studio Code的键盘快捷键
  • 【Jenkins流水线搭建】
  • PHP 基础介绍
  • DeepSeek如何重塑我的编程学习:计算机新生的AI实践
  • spring boot和spring cloud的关系
  • ThreadLocal原理和存在问题
  • 用Echarts的柱状图实现圆柱体效果
  • Docker 常用命令基础详解(一)
  • Java并发中的CAS机制:原理、应用与挑战(通俗易懂版)
  • 腾讯发布混元-3D 2.0: 首个开源高质3D-DiT生成大模型
  • 【机器学习】线性回归与一元线性回归
  • 哈希表-两个数的交集
  • 望远镜成像系统--科学评价光学镜头