IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32学习笔记——通用计时器基本原理 -> 正文阅读

[嵌入式]stm32学习笔记——通用计时器基本原理

stm32f10x最多有8个定时器,stm32f103zet6就有8个定时器,分别是4个通用定时器,2个高级定时器,2个基本定时器。

定时器种类????????位数计时器模式产生DMA请求捕获/比较通道互补输出特殊应用场景

高级定时器

(TIM1,TIM8)

16向上,向下,向上/下可以4带死区控制盒紧急刹车,可应用于PWM电机控制

通用定时器

(TIM2~TIM5)

16向上,向下,向上/下可以4通用。定时计数,PWM输出,输入捕获,输出比较

基本定时器

(TIM6,TIM7)

16向上,向下,向上/下可以0主要应用于驱动DAC

通用定时器(TIM2~TIM5)功能特点描述:

  • 位于低速的APB1总线上(可以使用来自APB1的时钟,也有其他始终来源)
  • 16位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)
  • 16位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为(1~65535)之间的任意值
  • 4个独立通道(TIMx_CH1~4),这些通道可以用来作为:
    1. 输入捕获
    2. 输出比较
    3. PWM生成(边缘或中间对齐模式)
    4. 单脉冲模式输出
  • 可使用外部信号(TIMx_ETR)控制定时器和定时器互连(用1个定时器控制另一个定时器)的同步电路
  • ?如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器):
  1. 更新:计数器向上/向下溢出,计数器初始化(通过软件或者内部/外部触发)
  2. 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
  3. 输入捕获
  4. 输出比较
  5. 支持针对定位的增量(正交)编码器和霍尔传感器电路
  6. 触发输入作为外部时钟或者按周期的电流管理
  • STM32的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等
  • 使用定时器预分频器和RCC时钟控制预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。

计数器模式

通用定时器可以向上计数,向下计数,向上向下双向计数模式

向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数,并且产生一个计数器向上溢出事件。

向下计数模式:计数器从自动装载值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,产生一个计数器向下溢出的时间。

中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

通用定时器工作过程简略?

定时器的时钟选择有内部时钟(APB1),外部时钟(2,3,4号定时器可以使用),其他定时器(ITRn)或者定时器通道(TIn)。

ITRn:定时器会产生一个TRGn的时钟发送到其他定时器作为ITRn或者发送到DAC/ADC。

TIn:来自TIMx_CHn引脚的电平,通过滤波和边沿检测等后产生的信号


引脚输入的电平除了作为TIn以外,还会经过选择、预分频,当捕获到上升沿(可以设置为下降沿)时,捕获/比较寄存器就会把CNT计数器中的值记下来,通过这种方法可以方便地测量脉冲地宽度。

每个定时器都有4个独立的通道,要么用作输入捕获,要么用作输出比较。输出比较的功能比如,CNT计数器会跟捕获/比较寄存器中的值进行比较,如果更大通道输出高电平,更小通道输出低电平。


如果选择内部时钟APB1,那么APB1的预分频系数为1则通用定时器时钟为36MHz,APB1的预分频系数不为1,那么就为72MHz。

TIMx_PSC的预分频系数在此基础上再进行分频。


常用库函数:

void TIM_TimeBaseInit();//初始化
void TIM_Cmd();//使能
void TIM_ITConfig();//中断使能
FlagStatus TIM_GetFlagStatus();//标志位获取
void TIM_ClearFlag();//标志位清除
ITStatus TIM_GetITStatus();//中断标志位获取
void TIM_ClearITPendingBit();//挂起状态标志位清除

定时器中断实现步骤:

  1. 使能定时器时钟(和之前的内容一样调用APB1的使能函数)
  2. 初始化定时器,配置ARR(重装载寄存器),PSC(预分频系数)
  3. 开启定时器中断,配置NVIC(调用中断使能函数和NVIC初始化)
  4. 使能定时器
  5. 编写中断服务函数(TIMx_IRQHandler())

Tout(溢出时间) = (ARR+1)(PSC+1)/Tclk

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:22:05  更:2021-10-26 12:22:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:22:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码