打印
[应用相关]

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

[复制链接]
511|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 tanleitanlei 于 2022-7-11 19:33 编辑

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,抓取波形,验证程序效果。



SC0088_AT32_TMR_Specified_Number_PWM_by_RPR_V2.0.0.zip

2.75 MB

使用特权

评论回复
沙发
guijial511| | 2022-7-11 21:00 | 只看该作者
下载参考一下,谢谢分享。

使用特权

评论回复
板凳
DTLZ_001| | 2022-7-11 22:22 | 只看该作者
只有高级定时器才有PPR,而且范围是FF,用处不大呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

71

帖子

1

粉丝