STM32笔记----6、TIM定时器其他功能

这篇具有很好参考价值的文章主要介绍了STM32笔记----6、TIM定时器其他功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、TIM输出比较

1.1 输出比较简介

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

CCR(Capture Compare Register):输出捕获寄存器

1.2 PWM简介

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

使用PWM波形,可以在数字系统等效输出模拟量。

1.3 输出比较通道

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

上图输出比较通道(通用)相当于下图的红框那部分电路:

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

输出模式控制器见下表:STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

1.4 PWM基本结构

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

蓝色线:CNT值

黄色线:ARR值

红色线:CCR值

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

PWM频率等于计数器CNT更新频率

1.5 初始化代码

(1)开启外部时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

(2)选择时基单元的时钟

TIM_InternalClockConfig(TIM2);

(3)配置时基单元

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;  //ARR
TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;  //PSC
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);

(4)配置输出比较单元

TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_OCStructInit(&TIM_OCInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 50;     //CCR
TIM_OC1Init(TIM2, &TIM_OCInitStructure);

先给结构体变量赋初始值,以防下次使用高级定时器时,其他结构体变量未赋值带来的问题。

(5)配置GPIO

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

(6)配置运行控制

TIM_Cmd(TIM2, ENABLE);

2、 TIM输入捕获

2.1 输入捕获简介

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

2.2 频率测量

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

测频法适合测量高频信号,更新慢(正常1s)

测周法适合测量低频信号,更新快(待测信号几百几千Hz)

2.3 输入捕获通道

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

TI1:就是CH1引脚

TI1F:滤波后的信号

fDTS:滤波器的采样时钟来源

CC1P:极性选择

CC1S:对数据选择器进行选择

ICPS:进行分频选择

从模式控制器:里面有完成CNT清零的电路

2.4 主从触发模式

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

主模式:可以将定时器内部的信号,映射到TRGO脚,用于触发别的外设。

从模式:接收其他外设或者自身外设的一些信号,用于控制自身定时器的运行,即被别的信号控制。

触发源选择:选择从模式的触发信号源。

举例:上述让TI1FP1信号自动触发CNT清0,那触发源选择TI1FP1,从模式执行Reset的操作。

2.5 输入捕获基本结构

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

左上角:上升沿时,CCR1=CNT,CNT转运到CCR里,这是输入捕获自动执行的。

CNT = 0,CNT清零,这是从模式自动执行的。

测周法:CNT在标准时钟的驱动下,不断自增,由于之前清0过,CNT从上升沿开始,一直++,直到下个上升沿来临。CCR1始终保持最新一个周期的计数值,即N。 

注意:

需要先转运CNT的值到CCR里去,再触发从模式给CNT清零。或者非阻塞的同时转移:CNT的值转移到CCR,同时0转移到CNT里去。CNT最大一般为65535,频率过低可能导致溢出。

2.6 PWMI基本结构

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

可以同时测量周期和占空比。

左上角:在下降沿触发CCR2捕获CNT的值,但不触发CNT清零。

2.7 初始化代码

(1)开启外部时钟

(2)配置GPIO

(3)选择时基单元时钟

(4)配置时基单元

(5)初始化输入捕获单元

TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICFilter = TIM_ICFilter_0xF;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPrescaler_DIV1;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInit(TIM3, &TIM_ICInitStructure);  //输入捕获模式使用
TIM_PWMIConfig(TIM3, ICInitStructure);   //PWMI模式使用

(6)配置TRGI的触发源为TI1FP1

TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);

(7)配置从模式为reset

TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);

(8)配置运行控制

3、TIM编码器接口

3.1 编码器接口简介

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

工作流程:编码器有两个输出:A相和B相。接入到STM32定时器的编码器接口,编码器接口自动控制定时器时基单元中的CNT计数器,进行自增或自减。即:编码器右转,CNT++,右转产生一个脉冲,CNT就+1。

编码器测速实际上就是测频法测正交脉冲的频率。

3.2 正交编码器

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

使用正交信号,相比单独定义一个方向引脚,有什么好处?

答:(1)正交信号精度更高,因为A,B相都可以计次,相当于计次频率提高了一倍。

        (2)正交信号可以抗噪声,因为正交信号两个信号是交替跳变的。

编码器的设计逻辑:首先把A相和B相的所有边沿作为计数器的计数时钟,出现边沿信号时,就计数自增或自减,计数的方向由另一相的状态来确定。正反转由上表确定。

3.3 编码器接口基本结构

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

工作流程:输入捕获的前两个通道,通过GPIO口接入编码器的A、B相,通过滤波器,边沿检测,极性选择,产生TI1FP1和TI2FP2,通向编码器接口。编码器接口通过预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向,编码器正转时,CNT自增;编码器反转时,CNT自减。一般会设置ARR为65535,最大量程。

3.4 工作模式

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

TI1FP1信号和TI2FP2信号接的是编码器的A、B相。

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

STM32笔记----6、TIM定时器其他功能,stm32,笔记,c语言,单片机

3.5 初始化代码

(1)开启RCC外部时钟,开启GPIO 和定时器时钟

(2)配置GPIO,将GPIO配置成输入模式

(3)配置时基单元

(4)配置输入捕获单元

(5)配置编码器接口模式

TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIN_ICPolarity_Rising, TIN_ICPolarity_Rising);

(6)启动定时器文章来源地址https://www.toymoban.com/news/detail-832754.html

到了这里,关于STM32笔记----6、TIM定时器其他功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】学习笔记(TIM定时器)-江科大

    定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发

    2024年02月10日
    浏览(48)
  • 江科大stm32视频学习笔记——TIM定时中断&定时器外部时钟

    目录 一、TIM(Timer)定时器简介  1.1 定时器类型 摘要 1.1.1 基本定时器 1.1.2 通用定时器 1.1.3 高级定时器  1.2 定时中断基本结构 1.2.1 结构框图 1.2.2 时序图 二、定时器定时中断定时器外部时钟 2.1 内部时钟闹钟代码 2.1.1 Timer.c 2.1.2 Buzzer.c加入间隔发声函数 2.1.3 main.c 2.1.4 实验视频

    2024年01月23日
    浏览(59)
  • STM32学习笔记 & 通用定时器TIM3~TIM5 13

    通用定时器是一个通过可编程预分频器驱动的 16 位自动装载计数器构成。 它适用于多种场合,包括测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波形 ( 输出比较和PWM)。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间

    2024年02月05日
    浏览(98)
  • STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    ​  本次课程采用单片机型号为STM32F103C8T6。 ​  课程链接:江科大自化协 STM32入门教程   往期笔记链接:   STM32学习笔记(一)丨建立工程丨GPIO 通用输入输出   STM32学习笔记(二)丨STM32程序调试丨OLED的使用   STM32学习笔记(三)丨中断系统丨EXTI外部中断

    2023年04月13日
    浏览(59)
  • STM32单片机入门学习笔记——定时器TIM第二部分

    笔记整理自B站UP主 江科大自化协 教程 《STM32入门教程-2023持续更新中》 ,所用单片机也为教程推荐单片机。 第一部分:定时器基本定时的功能,定时器每隔这个时间产生一个中断,来实现每隔一个固定时间执行一段程序的目的,比如要做一个时钟、秒表或者使用一些程序算

    2024年02月08日
    浏览(50)
  • STM32单片机入门学习笔记——定时器TIM第一部分

    笔记整理自B站UP主 江科大自化协 教程 《STM32入门教程-2023持续更新中》 ,所用单片机也为教程推荐单片机。 第一部分:定时器基本定时的功能,定时器每隔这个时间产生一个中断,来实现每隔一个固定时间执行一段程序的目的,比如要做一个时钟、秒表或者使用一些程序算

    2024年02月03日
    浏览(51)
  • TIM-定时器——STM32

    TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器

    2024年02月02日
    浏览(62)
  • STM32—定时器(TIM)_基本定时

    本文主要通过介绍定时器基本结构去学习如何使用定时器进行定时。 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,从而达到计时功能。 本文从通用定时器介绍。本文所使用芯片为 STM32F103C8T6,拥有TIM1-TIM4 四个定时器资源。 图.2为基本定时器结构  

    2024年02月02日
    浏览(46)
  • STM-32:TIM定时中断—定时器定时中断/定时器外部时钟

    定时器可以对输入的时钟进行计数,并在达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等

    2024年02月09日
    浏览(54)
  • STM32--TIM定时器(1)

    STM32的TIM(定时器)是一种非常常用的外设,用于实现各种定时和计数功能。 它是基于时钟信号进行计数,并在计数值达到设定值时触发中断,执行相应的操作 。 一般来说,STM32中有三类定时器: 在我们这款STM32F03C9T6有4种定时器资源: TIM1,TIM2,TIM3,TIM4 ; 对于定时器,类型越

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包