本帖最后由 ArterySW 于 2022-5-16 19:01 编辑
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开发板
图 1. AT-START-F403A V1.0 开发板
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 波形如下图
图 2. Demo 中 DMA 动态更新 PWM 占空比波形
附件: |