硬汉嵌入式论坛

 找回密码
 立即注册
查看: 809|回复: 0
收起左侧

[客户分享] AT32F4xx_使用DMA动态更新PWM占空比

[复制链接]

41

主题

1

回帖

124

积分

初级会员

积分
124
发表于 2023-1-9 20:16:56 | 显示全部楼层 |阅读模式
本帖最后由 这天儿蓝的哟 于 2023-1-9 20:17 编辑

AT32F4xx_使用DMA动态更新PWM占空比
示例目的
本示例代码基于AT32F403A,展示了如何使用AT32 的TMR 和DMA 动态更新PWM 占空比。
该示例使用TMR4 的更新事件触发DMA1 搬运数据至TMR4 的通道2 数据寄存器(TMRx_C2DT),达到在TMR4 的通道2(PB7)动态输出占空比不同的PWM 波的效果。

支持型号列表:
AT32F403xx
AT32F403Axx
AT32F407xx
AT32F413xx
AT32F415xx
AT32F421xx

主要使用外设列表:
TMR4
DMA

1. 硬件资源
1) AT-START-F403A V1.0开发板
image.png

2. 软件资源
1) 该Demo 以AT32F403A 为例,BSP 版本AT32F403A_407_Firmware_Library_V2.0.6。
2) TMR 配置:
  • 配置TMR4 的通道2(PB7)产生PWM 波。
  • 配置DMA1 并将其请求映射选择为通道7(TMR4 的更新事件),搬运内存中的不同占空比数据至TMR4 的通道2 数据寄存器(TMRx_C2DT),动态更新占空比。
3) 对main.c 的“src_buffer[]”数组直接做相应修改可配置想要的占空比,数组长度软件会自动计算。
注: 所有project 都是基于keil 5 而建立, 若用户需要在其他编译环境上使用, 请参考
AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修
改即可。

3. 示例使用
1) 硬件连接:将PB7(TMR4_CH2)接入逻辑分析仪或示波器。
2) 打开\SourceCode\SC0069_SourceCode_V2.0.0\utilities\SC0069_Demo\mdk_v5\Duty.uvprojx 源程序,编译后下载到实验板。
3) 抓取PB7 波形,验证程序效果。当正常运行时,TMR4_CH2(PB7)将按照uint16_t src_buffer[]= {10,20,30,40,50,60,70,80,90,10,20,30,40,50,60,70,80,90};中的变量输出对应占空比的PWM波形,Demo 中的PWM 波形如下图
进版到V2.0.1

SC0069_AT32_TMR_DMA_Update_PWM_Duty_Cycle_Dynamically_V2.0.1.zip

778.28 KB, 下载次数: 18

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 09:21 , Processed in 0.148009 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表