AT32 TMR利用RPR寄存器输出指定个数PWM波

TMR利用RPR寄存器输出指定个数PWM波

示例目的
本示例代码基于AT32F421,展示了如何使用AT32 的高级定时器TMRx 的重复周期寄存器(TMRx_RPR)输出指定个数的PWM 波。该示例使用TMR1 产生指定个数的7 通道PWM 波。利用重复周期寄存器(TMRx_RPR)非0 时,每次溢出重复计数器递减(不产生溢出事件),当重复计数器递减到 0 时,产生溢出事件这一特性,将需要产生的PWM 个数装载入TMRx_RPR 寄存器。在主函数中循环检测,如果USER 按键摁下,TMR1 开始计数。在TMR1 的溢出中断,关闭TMR1 计数。直到检测到下一次USER 按键摁下,再次产生指定个数的PWM 波。

注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。

支持型号列表:
支持型号 AT32 全系列

主要使用外设列表:
主要使用外设 TIMER

快速使用方法
硬件资源

  1. AT-START-F421 V1.x 实验板;
  2. 逻辑分析仪或示波器。
    在这里插入图片描述

软件资源

  1. 该Demo 以AT32F421 为例,BSP 版本AT32F421_Firmware_Library_V2.0.x。
  2. 板级初始化(按键、LED 灯等),NVIC 配置(溢出中断),main()函数中循环检测,如果USER按键摁下,TMR1 开始计数,翻转LED2 指示计数开始。
  3. TMR 配置:
    配置TMR1 的7 个通道产生PWM 波。
    在这里插入图片描述

配置TMR1 的溢出中断,在其中关闭TMR1 计数并翻转LED2 指示计数结束,直到检测到下一次USER 按键摁下,再次产生指定个数的PWM 波。
可对main.c 的“#define PWM_NUM 100”做相应修改,配置想要的PWM个数,需小于TMRx_RPR寄存器的最大值。

注: 所有project 都是基于keil 5 而建立, 若用户需要在其他编译环境上使用, 请参考AT32xxx_Fi rmware_Library_V2.x.x \project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

示例使用

  1. 硬件连接:将7 通道PWM 对应GPIO 引脚接入逻辑分析仪或示波器。
  2. 打开\SourceCode\SC0088_SourceCode\utilities\SC0088_Demo\mdk_v5\rpr_pwm_output 源程
    序,编译后下载到实验板。
  3. 观察LED2,抓取波形,验证程序效果。
    在这里插入图片描述
    源代码请到如下路径获取:
    https://bbs.21ic.com/forum.php?mod=post&action=edit&fid=1004&tid=3238054&pid=12894004&page=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值