0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32讲堂036 | AT32 MCU定时器入门指南

雅特力 AT32 MCU 2022-11-02 14:56 次阅读

AT32定时器概述

定时器种类有基本定时器、通用定时器、高级控制定时器,以AT32F435xx举例,下表为各种类型定时器的功能总表。本文主要就定时器溢出中断进行基础讲解和案列解析。表1. 各定时器功能总表12b602fa-5a78-11ed-b116-dac502259ad0.png12d608ac-5a78-11ed-b116-dac502259ad0.png

例 定时器溢出中断

功能简介

定时器溢出中断是定时器最基础功能,进入中断的时间周期可由相关寄存器配置。

  • 定时器计数器值TMRx_CVAL
  • 定时器预分频寄存器TMRx_DIV
  • 定时器周期寄存器(TMRx_PR)

定时器中断频率计算公式如下12fb96bc-5a78-11ed-b116-dac502259ad0.png其中,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. 定时器时钟源架构13107a5a-5a78-11ed-b116-dac502259ad0.png

资源准备

1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\timer_base

软件设计

1) 配置流程

  • 编写定时器溢出中断函数的应用程序
  • 开启定时器外设时钟
  • 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
  • 配置定时器为向上计数方向
  • 开启定时器溢出中断
  • 开启NVIC溢出中断
  • 开启定时器计数

2) 代码介绍

  • main函数代码描述

13248068-5a78-11ed-b116-dac502259ad0.png

  • TMR1_OVF_TMR10_IRQHandler中断函数代码描述

134d7112-5a78-11ed-b116-dac502259ad0.png

实验效果

  • LED3每1秒翻转一次。

例 PWM输出

功能简介

定时器的输出部分由比较器和输出控制构成,用于编程输出信号的周期、占空比、极性。高级定时器的输出部分在不同通道上有所不同。

高级定时器在通道1到通道3上拥有互补输出,且配备死区调节;通道1到通道4拥有刹车控制。通用定时器的输出部分没有上述功能,只配备了4个通道输出。基本定时器、通用定时器和高级定时器的具体功能差异可查看RM的TMR章节。

如下图为高级定时器通道1到3输出部分原理图:

图2.高级定时器通道1到3输出部分原理图136d9abe-5a78-11ed-b116-dac502259ad0.png图3. 高级定时器通道4输出部分原理图1389964c-5a78-11ed-b116-dac502259ad0.png

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函数代码描述

13aaa15c-5a78-11ed-b116-dac502259ad0.png

实验效果

  • 通过逻辑分析仪或者示波器可将波形打出来。

如下图:图4. 7路PWM输出13d8d4a0-5a78-11ed-b116-dac502259ad0.png图中通道1到4输出频率相同但占空比不同的波形,互补通道通过输出极性的调节与其对应的通道输出相同的波形。

例 PWM输入捕获

功能简介

定时器的输入部分由专门的捕获电路实现,可用于对输入信号的滤波、选择、分频和输入捕获功能;通过对捕获值的计算,可得到输入波形的频率和占空比。

如下图为输入部分原理图:

图5. 定时器输入部分原理图14891752-5a78-11ed-b116-dac502259ad0.png

输入模式下,当选中的触发信号被检测到时,通道寄存器(TMRx_CxDT)会记录当前计数器计数值,并将捕获比较中断标志位(CxIF)置1,若已使能通道中断(CxIEN)、通道DMA请求(CxDEN)则产生相应的中断和DMA请求。若在CxIF已置1后检测到选中的触发信号,则将CxOF位置1。

另外,还提供了更加高效的PWM波输入捕获功能,可以更方便的计算出输入波形的频率和占空比。此模式的通过内部两个CxDT寄存器实现,输入波形通过定时器的通道1或者通道2输入即可。图6. 定时器捕获PWM波原理图14a545ee-5a78-11ed-b116-dac502259ad0.png

将定时器配置成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函数代码描述

14c9c482-5a78-11ed-b116-dac502259ad0.png

  • 中断函数代码描述

14ee1a94-5a78-11ed-b116-dac502259ad0.png

实验效果

  • 从PA7灌入PWM波形;
  • 将串口1连接到上位机,然后通过上位机串口工具即可看到打印信息

例 输入捕获

功能简介

通过对外部信号的上升沿或者下降沿进行捕获可以实现对外部信号输入捕获并计算频率的功能。本例程实现了对外部信号进行捕获并通过串口打印出频率。


资源准备

1) 硬件环境对应产品型号的AT-START BOARD2) 软件环境project\at_start_xxx\examples\tmr\input_capture

软件设计

1) 配置流程

  • 开启定时器外设时钟
  • 配置输入管脚
  • 配置定时器TMRx_DIV寄存器和TMRx_PR寄存器
  • 配置定时器为向上计数方向
  • 配置定时器的输入捕获功能
  • 开启定时器计数

2) 代码介绍

  • main函数代码描述

15101946-5a78-11ed-b116-dac502259ad0.png

  • 中断函数代码描述

15408504-5a78-11ed-b116-dac502259ad0.png

实验效果

  • 从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函数代码描述

15597cda-5a78-11ed-b116-dac502259ad0.png

实验效果

从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函数代码描述

1599484c-5a78-11ed-b116-dac502259ad0.png

实验效果

  • 从PA8输出PWM波形;

例 单脉冲输出

功能简介

单脉冲输出模式是PWM模式的特例,将OCMEN位置1可开启单周期模式,此模式下,仅在当前计数周期中进行比较匹配,完成当前计数后,TMREN位清0,因此仅输出一个脉冲。当配置为向上计数模式时,需要严格配置CVAL;向下计数时,需严格配置CVAL>CxDT。

当TMR受到外部触发或者软件使能CNT时,TMR开始计数并在此次overflow事件时停止计数。此过程中输出也会根据配置产生波形。

单脉冲输出原理如下图:

图7. 单脉冲输出原理图18fa2d94-5a78-11ed-b116-dac502259ad0.png

图中当受到外部触发后,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函数代码描述

190e2420-5a78-11ed-b116-dac502259ad0.png

实验效果

  • PB7输入管脚,外部给上升沿触发即可;
  • PB6为输出管脚,输出单脉冲波形。

使用逻辑分析仪打出波形如下:

图8. 单脉冲输出结果193d81b6-5a78-11ed-b116-dac502259ad0.png

例 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函数代码描述

19509ecc-5a78-11ed-b116-dac502259ad0.png

实验效果

  • PA0/1/2/3输出波形;

图9. 32位定时器输出结果197e310c-5a78-11ed-b116-dac502259ad0.png

例 定时器同步

功能简介

主次定时器之间可由内部连接信号进行同步。主定时器可由PTOS[2:0]位选择主定时器输出,即同步信息;次定时器由SMSEL[2:0]位选择从模式,即次定时器的工作模式。定时器从模式有以下几种:

复位模式:

此模式下,当次定时器收到一个同步信号后,次定时器复位计数器和预分频器,定时器的 CVAL寄存器变为0重新开始计数。若OVFS位为0,将产生一个溢出事件。图10. 复位模式图199430ec-5a78-11ed-b116-dac502259ad0.png

挂起模式:

挂起模式下,计数的计数和刹车受选中触发输入信号控制,当触发输入为高电平时计数器开始计数;当为低电平时,计数器暂停计数。图11. 挂起模式图19a78714-5a78-11ed-b116-dac502259ad0.png

触发模式:

触发模式下,次定时器当受到外部触发信号后,自动启动定时器,即硬件置TMR_EN为1。所以在触发模式下,初始化定时器后软件不需要使能定时器。图12. 挂起模式图19c942aa-5a78-11ed-b116-dac502259ad0.png本例程实现了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函数代码描述

19e40b3a-5a78-11ed-b116-dac502259ad0.png

实验效果

  • 通过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
    mcu
    +关注

    关注

    146

    文章

    16977

    浏览量

    350215
收藏 人收藏

    评论

    相关推荐

    STM32转AT32代码转换

    1.引言在嵌入式开发中,我们经常会遇到更换单片机芯片的事情,若芯片是同一厂家的还好说,若是不同厂家的则需要重新写,重新调,重新去学习其底层驱动程序,比较费时费力。如:ST32转AT32、ST32转
    的头像 发表于 09-28 08:09 265次阅读
    STM32转<b class='flag-5'>AT32</b>代码转换

    AT32讲堂088 | 雅特力AT32F402/F405时钟配置

    简介时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文档就着重针对各系列的情况来详细
    的头像 发表于 09-15 08:08 393次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>088 | 雅特力AT32F402/F405时钟配置

    AT32讲堂087 | 雅特力AT32 IDE快速入门指南

    新建项目新项目向导AT32ID提供支持雅特力MCU的C语言项目模板,方便用户快速创建项目。菜单栏【File】>【New】>【CProject】。新建项目向导的对话框将出现。在对
    的头像 发表于 09-15 08:08 349次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>087 | 雅特力<b class='flag-5'>AT32</b> IDE快速<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    雅特力AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 445次阅读
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的随机数生成

    AT32讲堂085 | 雅特力AT32 MCU HICK时钟校准

    简介AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),其本质就是内置于芯片的RC振荡。在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟
    的头像 发表于 08-30 12:26 494次阅读
    <b class='flag-5'>AT32</b><b class='flag-5'>讲堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK时钟校准

    定时器的工作方式介绍

    定时器是计算机和嵌入式系统中常见的一种硬件模块,用于实现定时和计数功能。定时器的工作方式通常由一组寄存来控制,这些寄存定义了
    的头像 发表于 07-12 10:29 712次阅读

    如何实现一个软件定时器

    在Linux,uC/OS,FreeRTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间标记加一,每个软件
    的头像 发表于 04-29 11:00 579次阅读

    使用555定时器的可调双定时器电路

    定时器 IC 555 是最通用和最常用的 IC 之一,因为它的应用范围更广,如 PWM放大器、延迟定时器、开关电路、占空比选择、时钟脉冲发生等。这也可用于各种应用,如精确
    的头像 发表于 02-25 15:16 1984次阅读
    使用555<b class='flag-5'>定时器</b>的可调双<b class='flag-5'>定时器</b>电路

    雅特力AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,雅特力与SEGGER共同宣布J-Link仿真调试与Flasher在线烧录全面支持AT32 MCU产品,SEGGER工具链的加持使AT32
    的头像 发表于 02-23 10:27 356次阅读

    AT32 定时器配置中pr和div的作用

    AT32定时器是51系列单片机中的一种定时器,可以实现多种定时功能。在AT32定时器中,pr和d
    的头像 发表于 01-08 10:12 1222次阅读

    单片机定时器的用法

    本章以CW32通用定时器为例介绍单片机定时器的用法。
    的头像 发表于 01-04 10:37 1340次阅读
    单片机<b class='flag-5'>定时器</b>的用法

    润开鸿AT32开发平台通过OpenHarmony兼容性测评

    近期,江苏润开鸿数字科技有限公司(以下简称“润开鸿”)AT32开发平台通过OpenAtom OpenHarmony(以下简称\"OpenHarmony\")3.2.
    发表于 12-21 17:20

    润开鸿AT32开发平台通过OpenHarmony兼容性测评

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony 近期,江苏润开鸿数字科技有限公司(以下简称“润开鸿”)AT32开发平台通过OpenAtom
    的头像 发表于 12-20 21:10 653次阅读
    润开鸿<b class='flag-5'>AT32</b>开发平台通过OpenHarmony兼容性测评

    定时器会阻塞线程吗 定时器指令有哪几种

    定时器会阻塞线程吗 定时器指令有哪几种  定时器一般不会阻塞线程,但具体是否会阻塞取决于所使用的定时器实现方式和使用方式。 定时器指令可以分
    的头像 发表于 12-19 14:03 884次阅读

    润开鸿AT32开发平台通过OpenHarmony兼容性测评

    近期,江苏润开鸿数字科技有限公司(以下简称“润开鸿”)AT32开发平台通过OpenHarmony3.2.Release版本兼容性测评,助力润开鸿基于该开发平台全新研发推出的行业终端设备顺利融入
    的头像 发表于 12-15 08:02 581次阅读
    润开鸿<b class='flag-5'>AT32</b>开发平台通过OpenHarmony兼容性测评