AT32定时器概述
定时器种类有基本定时器、通用定时器、高级控制定时器,以AT32F435xx举例,下表为各种类型定时器的功能总表。本文主要就定时器溢出中断进行基础讲解和案列解析。表1. 各定时器功能总表
例 定时器溢出中断
功能简介
定时器溢出中断是定时器最基础功能,进入中断的时间周期可由相关寄存器配置。
- 定时器计数器值TMRx_CVAL
- 定时器预分频寄存器TMRx_DIV
- 定时器周期寄存器(TMRx_PR)
定时器中断频率计算公式如下其中,TMRxCLK虽然来源于APB1/2时钟,但下图时钟架构可以看出,档APB1/2 Divider存在非1除频时,TMRxCLK会有x2。例如AHB=240 MHz,APB1/2=120MHz,TMRxCLK的实际频率为240 MHz.以向上计数模式举例,TMREN bit使能后,TMRx_CVAL会开始进行累加1,直到其值等于TMRx_PR后,OVFIF位会置起并且定时器会触发溢出中断事件,(若溢出中断有开启,则会产生溢出中断),同时TMRx_CVAL会再次从0开始计数,周而复始。图1. 定时器时钟源架构
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\timer_base
软件设计
1) 配置流程
- 编写定时器溢出中断函数的应用程序
- 开启定时器外设时钟
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 开启定时器溢出中断
- 开启NVIC溢出中断
- 开启定时器计数
2) 代码介绍
- main函数代码描述
- TMR1_OVF_TMR10_IRQHandler中断函数代码描述
实验效果
- LED3每1秒翻转一次。
例 PWM输出
功能简介
定时器的输出部分由比较器和输出控制构成,用于编程输出信号的周期、占空比、极性。高级定时器的输出部分在不同通道上有所不同。
高级定时器在通道1到通道3上拥有互补输出,且配备死区调节;通道1到通道4拥有刹车控制。通用定时器的输出部分没有上述功能,只配备了4个通道输出。基本定时器、通用定时器和高级定时器的具体功能差异可查看RM的TMR章节。
如下图为高级定时器通道1到3输出部分原理图:
图2.高级定时器通道1到3输出部分原理图图3. 高级定时器通道4输出部分原理图
PWM输出是定时器最常用的输出模式,分为PWM模式A和PWM模式B。其差异在于:
PWM模式A:-OWCDIR=0,若TMRx_C1DT>TMRx_CVAL时设置C1ORAW为高,否则为低;-OWCDIR=1,若TMRx_C1DT时设置C1ORAW为低,否则为高。PWM模式B:-OWCDIR=0,若TMRx_C1DT>TMRx_CVAL时设置C1ORAW为低,否则为高;-OWCDIR=1,若TMRx_C1DT时设置C1ORAW为高,否则为低。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\7_pwm_output
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输出管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 配置定时器输出通道为PWM模式B
- 开启定时器计数
2) 代码介绍
- main函数代码描述
实验效果
- 通过逻辑分析仪或者示波器可将波形打出来。
如下图:图4. 7路PWM输出图中通道1到4输出频率相同但占空比不同的波形,互补通道通过输出极性的调节与其对应的通道输出相同的波形。
例 PWM输入捕获
功能简介
定时器的输入部分由专门的捕获电路实现,可用于对输入信号的滤波、选择、分频和输入捕获功能;通过对捕获值的计算,可得到输入波形的频率和占空比。
如下图为输入部分原理图:
图5. 定时器输入部分原理图
输入模式下,当选中的触发信号被检测到时,通道寄存器(TMRx_CxDT)会记录当前计数器计数值,并将捕获比较中断标志位(CxIF)置1,若已使能通道中断(CxIEN)、通道DMA请求(CxDEN)则产生相应的中断和DMA请求。若在CxIF已置1后检测到选中的触发信号,则将CxOF位置1。
另外,还提供了更加高效的PWM波输入捕获功能,可以更方便的计算出输入波形的频率和占空比。此模式的通过内部两个CxDT寄存器实现,输入波形通过定时器的通道1或者通道2输入即可。图6. 定时器捕获PWM波原理图
将定时器配置成PWM输入模式后,可通过C1DT和C2DT的值计算出对应PWM波形的频率和占空比:
频率=TMR_CLK/C1DT占空比=C2DT/C1DT
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\pwm_input
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输入管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 配置定时器的PWM输入模式
- 开启定时器计数
2) 代码介绍
- main函数代码描述
- 中断函数代码描述
实验效果
例 输入捕获
功能简介
通过对外部信号的上升沿或者下降沿进行捕获可以实现对外部信号输入捕获并计算频率的功能。本例程实现了对外部信号进行捕获并通过串口打印出频率。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\input_capture
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输入管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 配置定时器的输入捕获功能
- 开启定时器计数
2) 代码介绍
- main函数代码描述
- 中断函数代码描述
实验效果
- 从PA7灌入PWM波形;
- 将串口1连接到上位机,然后通过上位机串口工具即可看到打印信息。
例 DMA传输
功能简介
定时器拥有强大的DMA传输能力,基本每个定时器都支持DMA请求的产生。这使得应用更加灵活。
本实验将src_buffer[0]、src_buffer[1]和src_buffer[2]数据通过DMA传输到TMR的TMRx_C3DT寄存器。实现了每个周期占空比都发生改变,且占空比在src_buffer[0]、src_buffer[1]和src_buffer[2]的值之间进行有序的切换。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\dma
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输入管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 配置DMA通道
- 配置定时器的溢出事件产生DMA请求
- 开启定时器计数
2) 代码介绍
- main函数代码描述
实验效果
从PA10、PB15输出PWM波形;
例 burst传输
功能简介
高级定时器和通用定时器除了支持常规的DMA传输功能,还额外支持DMA burst传输功能。在配置为burst传输后,当TMR产生一个DMA请求可连续传输以TMR地址为起始地址的多笔数据;传输数据的起始地址和数据量可通过软件配置。
如何配置burst传输:
1. 配置TMRx_DMACTRL寄存器,此寄存器的bit0到bit4为DMA传输地址偏移,此值决定了DMA传输的起始地址;bit8到bit12为DMA传输长度配置,此值决定了DMA传输的数据笔数。2. 配置DMA通道,此配置流程与常规DMA通道配置相同;需要注意的是DMA通道的源与目标地址寄存器中的一个必须为TMRx_DMADT寄存器地址;具体是源还是目标就由数据传输的方向决定。
本实验将src_buffer[0]和src_buffer[2]数据通过burst传输到TMR的TMRx_PR和TMRx_C1DT寄存器。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\dma_burst
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输入管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 配置DMA通道和定时器的burst功能
- 配置DMAMUX
- 开启定时器计数
2) 代码介绍
- main函数代码描述
实验效果
- 从PA8输出PWM波形;
例 单脉冲输出
功能简介
单脉冲输出模式是PWM模式的特例,将OCMEN位置1可开启单周期模式,此模式下,仅在当前计数周期中进行比较匹配,完成当前计数后,TMREN位清0,因此仅输出一个脉冲。当配置为向上计数模式时,需要严格配置CVAL;向下计数时,需严格配置CVAL>CxDT。
当TMR受到外部触发或者软件使能CNT时,TMR开始计数并在此次overflow事件时停止计数。此过程中输出也会根据配置产生波形。
单脉冲输出原理如下图:
图7. 单脉冲输出原理图
图中当受到外部触发后,TMR开始计数,当CVAL等于CxDT时,改变输出状态,当CVAL溢出时,输出状态再次改变从而达到输出一个单脉冲的目的。
本实验将TMR4配置为单脉冲模式。TMR4的通道1配置为输入并充当触发输入的源头,通道2配置为输出模式,充当单脉冲输出的端口。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\one_cycle
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输入、输出管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置定时器为向上计数方向
- 配置定时器为单脉冲模式
- 配置通道2为输出口,并作为TMR触发的触发源
2) 代码介绍
- main函数代码描述
实验效果
- PB7输入管脚,外部给上升沿触发即可;
- PB6为输出管脚,输出单脉冲波形。
使用逻辑分析仪打出波形如下:
图8. 单脉冲输出结果
例 32位定时器
功能简介
部分定时器可支持扩展为32位定时器(具体请查看RM)。扩展后,不单CVAL寄存器为32位,DIV和CxDT都会自动扩展为32位。
使能32位定时器只需要设置TMRx_CTRL1寄存器的bit10为1即可。
本实验将TMR2配置为32位定时器模式,然后配置为PWM输出模式使其输出PWM波形。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\tmr2_32bit
软件设计
1) 配置流程
- 开启定时器外设时钟
- 配置输入、输出管脚
- 使能32位模式
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置通道输出PWM波形
2) 代码介绍
- main函数代码描述
实验效果
- PA0/1/2/3输出波形;
图9. 32位定时器输出结果
例 定时器同步
功能简介
主次定时器之间可由内部连接信号进行同步。主定时器可由PTOS[2:0]位选择主定时器输出,即同步信息;次定时器由SMSEL[2:0]位选择从模式,即次定时器的工作模式。定时器从模式有以下几种:
复位模式:
此模式下,当次定时器收到一个同步信号后,次定时器复位计数器和预分频器,定时器的 CVAL寄存器变为0重新开始计数。若OVFS位为0,将产生一个溢出事件。图10. 复位模式图
挂起模式:
挂起模式下,计数的计数和刹车受选中触发输入信号控制,当触发输入为高电平时计数器开始计数;当为低电平时,计数器暂停计数。图11. 挂起模式图
触发模式:
触发模式下,次定时器当受到外部触发信号后,自动启动定时器,即硬件置TMR_EN为1。所以在触发模式下,初始化定时器后软件不需要使能定时器。图12. 挂起模式图本例程实现了TMR2同步TMR3和TMR4。主定时器TMR2选择溢出事件作为同步信号输出,次定时器TMR3和TMR4选择挂起模式作为从模式。
资源准备
1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\parallel_synchro
软件设计
1) 配置流程
- 定时器外设时钟
- 配置输入、输出管脚
- 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
- 配置主模式和从模式
- 配置PWM输出模式
- 使能定时器
2) 代码介绍
- main函数代码描述
实验效果
- 通过PA6/PA0/PB6输出波形,可使用逻辑分析仪抓取波形查看。
关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。
-
mcu
+关注
关注
146文章
16977浏览量
350215
发布评论请先 登录
相关推荐
评论