AT32定时器概述
例 定时器溢出中断
功能简介
定时器溢出中断是定时器最基础功能,进入中断的时间周期可由相关寄存器配置。
定时器计数器值TMRx_CVAL 定时器预分频寄存器TMRx_DIV 定时器周期寄存器(TMRx_PR)
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_xxx\examples\tmr\timer_base
软件设计
编写定时器溢出中断函数的应用程序
开启定时器外设时钟
配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
配置定时器为向上计数方向
开启定时器溢出中断
开启NVIC溢出中断
开启定时器计数
main函数代码描述
TMR1_OVF_TMR10_IRQHandler中断函数代码描述
实验效果
LED3每1秒翻转一次。
例 PWM输出
功能简介
高级定时器在通道1到通道3上拥有互补输出,且配备死区调节;通道1到通道4拥有刹车控制。通用定时器的输出部分没有上述功能,只配备了4个通道输出。基本定时器、通用定时器和高级定时器的具体功能差异可查看RM的TMR章节。
如下图为高级定时器通道1到3输出部分原理图:
PWM输出是定时器最常用的输出模式,分为PWM模式A和PWM模式B。其差异在于:
资源准备
开启定时器外设时钟 配置输出管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置定时器输出通道为PWM模式B 开启定时器计数
main函数代码描述
实验效果
通过逻辑分析仪或者示波器可将波形打出来。
例 PWM输入捕获
功能简介
如下图为输入部分原理图:
输入模式下,当选中的触发信号被检测到时,通道寄存器(TMRx_CxDT)会记录当前计数器计数值,并将捕获比较中断标志位(CxIF)置1,若已使能通道中断(CxIEN)、通道DMA请求(CxDEN)则产生相应的中断和DMA请求。若在CxIF已置1后检测到选中的触发信号,则将CxOF位置1。
将定时器配置成PWM输入模式后,可通过C1DT和C2DT的值计算出对应PWM波形的频率和占空比:
资源准备
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置定时器的PWM输入模式 开启定时器计数
main函数代码描述
中断函数代码描述
从PA7灌入PWM波形; 将串口1连接到上位机,然后通过上位机串口工具即可看到打印信息。
例 输入捕获
功能简介
通过对外部信号的上升沿或者下降沿进行捕获可以实现对外部信号输入捕获并计算频率的功能。本例程实现了对外部信号进行捕获并通过串口打印出频率。
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_xxx\examples\tmr\input_capture
软件设计
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置定时器的输入捕获功能 开启定时器计数
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 BOARD
2) 软件环境
project\at_start_xxx\examples\tmr\dma
软件设计
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置DMA通道 配置定时器的溢出事件产生DMA请求 开启定时器计数
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 BOARD
2) 软件环境
project\at_start_xxx\examples\tmr\dma_burst
软件设计
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置DMA通道和定时器的burst功能 配置DMAMUX 开启定时器计数
main函数代码描述
实验效果
从PA8输出PWM波形;
例 单脉冲输出
功能简介
单脉冲输出模式是PWM模式的特例,将OCMEN位置1可开启单周期模式,此模式下,仅在当前计数周期中进行比较匹配,完成当前计数后,TMREN位清0,因此仅输出一个脉冲。当配置为向上计数模式时,需要严格配置CVAL<CxDT≤PR;向下计数时,需严格配置CVAL>CxDT。
当TMR受到外部触发或者软件使能CNT时,TMR开始计数并在此次overflow事件时停止计数。此过程中输出也会根据配置产生波形。
单脉冲输出原理如下图:
图中当受到外部触发后,TMR开始计数,当CVAL等于CxDT时,改变输出状态,当CVAL溢出时,输出状态再次改变从而达到输出一个单脉冲的目的。
本实验将TMR4配置为单脉冲模式。TMR4的通道1配置为输入并充当触发输入的源头,通道2配置为输出模式,充当单脉冲输出的端口。
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_xxx\examples\tmr\one_cycle
软件设计
开启定时器外设时钟 配置输入、输出管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置定时器为单脉冲模式 配置通道2为输出口,并作为TMR触发的触发源
main函数代码描述
实验效果
PB7输入管脚,外部给上升沿触发即可; PB6为输出管脚,输出单脉冲波形。
使用逻辑分析仪打出波形如下:
例 32位定时器
功能简介
使能32位定时器只需要设置TMRx_CTRL1寄存器的bit10为1即可。
本实验将TMR2配置为32位定时器模式,然后配置为PWM输出模式使其输出PWM波形。
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
2) 软件环境
project\at_start_xxx\examples\tmr\tmr2_32bit
软件设计
开启定时器外设时钟 配置输入、输出管脚 使能32位模式 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置通道输出PWM波形
main函数代码描述
PA0/1/2/3输出波形;
功能简介
定时器从模式有以下几种:
复位模式:
此模式下,当次定时器收到一个同步信号后,次定时器复位计数器和预分频器,定时器的 CVAL寄存器变为0重新开始计数。若OVFS位为0,将产生一个溢出事件。
图10. 复位模式图
挂起模式:
挂起模式下,计数的计数和刹车受选中触发输入信号控制,当触发输入为高电平时计数器开始计数;当为低电平时,计数器暂停计数。
触发模式:
本例程实现了TMR2同步TMR3和TMR4。主定时器TMR2选择溢出事件作为同步信号输出,次定时器TMR3和TMR4选择挂起模式作为从模式。
资源准备
1) 硬件环境
对应产品型号的AT-START BOARD
project\at_start_xxx\examples\tmr\parallel_synchro
软件设计
定时器外设时钟 配置输入、输出管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置主模式和从模式 配置PWM输出模式 使能定时器
main函数代码描述
通过PA6/PA0/PB6输出波形,可使用逻辑分析仪抓取波形查看。
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。