AT32 MCU定时器入门指南
AT32定时器概述
例 定时器溢出中断
功能简介
定时器溢出中断是定时器最基础功能,进入中断的时间周期可由相关寄存器配置。
定时器计数器值TMRx_CVAL 定时器预分频寄存器TMRx_DIV 定时器周期寄存器(TMRx_PR)
资源准备
软件设计
编写定时器溢出中断函数的应用程序 开启定时器外设时钟 配置定时器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连接到上位机,然后通过上位机串口工具即可看到打印信息。
例 输入捕获
功能简介
通过对外部信号的上升沿或者下降沿进行捕获可以实现对外部信号输入捕获并计算频率的功能。本例程实现了对外部信号进行捕获并通过串口打印出频率。
资源准备
软件设计
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置定时器的输入捕获功能 开启定时器计数
main函数代码描述
中断函数代码描述
实验效果
从PA7灌入PWM波形; 将串口1连接到上位机,然后通过上位机串口工具即可看到打印信息。
例 DMA传输
功能简介
本实验将src_buffer[0]、src_buffer[1]和src_buffer[2]数据通过DMA传输到TMR的TMRx_C3DT寄存器。实现了每个周期占空比都发生改变,且占空比在src_buffer[0]、src_buffer[1]和src_buffer[2]的值之间进行有序的切换。
资源准备
软件设计
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置DMA通道 配置定时器的溢出事件产生DMA请求 开启定时器计数
main函数代码描述
实验效果
例 burst传输
功能简介
如何配置burst传输:
本实验将src_buffer[0]和src_buffer[2]数据通过burst传输到TMR的TMRx_PR和TMRx_C1DT寄存器。
资源准备
软件设计
开启定时器外设时钟 配置输入管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置DMA通道和定时器的burst功能 配置DMAMUX 开启定时器计数
main函数代码描述
实验效果
从PA8输出PWM波形;
例 单脉冲输出
功能简介
当TMR受到外部触发或者软件使能CNT时,TMR开始计数并在此次overflow事件时停止计数。此过程中输出也会根据配置产生波形。
单脉冲输出原理如下图:
图中当受到外部触发后,TMR开始计数,当CVAL等于CxDT时,改变输出状态,当CVAL溢出时,输出状态再次改变从而达到输出一个单脉冲的目的。
本实验将TMR4配置为单脉冲模式。TMR4的通道1配置为输入并充当触发输入的源头,通道2配置为输出模式,充当单脉冲输出的端口。
资源准备
软件设计
开启定时器外设时钟 配置输入、输出管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置定时器为向上计数方向 配置定时器为单脉冲模式 配置通道2为输出口,并作为TMR触发的触发源
main函数代码描述
实验效果
PB7输入管脚,外部给上升沿触发即可; PB6为输出管脚,输出单脉冲波形。
使用逻辑分析仪打出波形如下:
例 32位定时器
功能简介
使能32位定时器只需要设置TMRx_CTRL1寄存器的bit10为1即可。
本实验将TMR2配置为32位定时器模式,然后配置为PWM输出模式使其输出PWM波形。
资源准备
软件设计
开启定时器外设时钟 配置输入、输出管脚 使能32位模式 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置通道输出PWM波形
main函数代码描述
实验效果
PA0/1/2/3输出波形;
例 定时器同步
功能简介
复位模式:
挂起模式:
触发模式:
资源准备
软件设计
定时器外设时钟 配置输入、输出管脚 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器 配置主模式和从模式 配置PWM输出模式 使能定时器
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、物联网、消费、商务及工控等领域。