AC52系列PWM使用说明文档
AC52系列PWM使用说明文档
目录
TOC \o "1-2" \h \u HYPERLINK \l _Toc31362 一、定时器PWM配置方式 PAGEREF _Toc31362 \h 1
HYPERLINK \l _Toc26740 二、硬件PWM配置方式 PAGEREF _Toc26740 \h 3
HYPERLINK \l _Toc20128 1、硬件PWM单路输出 PAGEREF _Toc20128 \h 4
HYPERLINK \l _Toc24191 2、硬件PWM多路输出 PAGEREF _Toc24191 \h 6
AC52系列有两种输出PWM的方式,分别是定时器方式和硬件PWM方式。其中定时器方式输出PWM可以映射到任意普通IO,而硬件PWM方式需要在固定的具有PWM功能的IO引脚上才能输出。
一、定时器PWM配置方式
定时器PWM方式是通过配置定时器计数产生PWM再映射到IO引脚进行输出。使用该方式需要注意的是:这个定时器在SDK其它地方是没有被占用到,在公版SDK中,定时器3默认是没有被占用到,下面是以定时器3为例子的相关配置。(注:AC52系列的寄存器详细说明文档可以查看《AC521N用户手册》)。
(1)通过对IOMC1寄存器中的OUT_CH3S[23:20]进行配置可以将channel3(其它channel配置也类似)选择为TMR3_PWM_OUT输出,如下:


(2)设置PWM输出的引脚,下面是以映射到PG6引脚为例,如果需要映射到其它引脚,只需要修改成对应的引脚即可。
(3)频率与占空比设置,相关寄存器配置代码及寄存器说明如下:
其中PWM频率是在定时器3控制寄存器T3_CON中的PSET1-0[5:4]这两位进行分频系数的设置,MODE1-0[1:0]工作模式选择,这里需要选择定时/计数模式


T3_PRD为定时器3的周期寄存器,具体如下:
T3_PWM寄存器决定PWM输出的占空比,说明如下:
T3_CNT为定时器3计数寄存器,初始化时需要置0。
(4)PWM占空比的设置,在跑了pwm_init函数之后就可以调用如下pwm_duty_cycle函数去设置PWM的占空比
完整的PWM初始化和占空比设置函数在下面文件中
EMBED Package
- 硬件PWM配置方式 硬件PWM输出有固定的引脚,一共有三组,每组有6个通道。具体的引脚如下:

这三组PWM在SDK中的pwm.h文件下有对应的宏定义
1、硬件PWM单路输出
该方式通过PWM硬件模块去给对应的引脚输出PWM,在使用硬件PWM时,需要对应的引脚具备PWM输出的功能。下面是以A组的通道0(PA6引脚)为例:
(1)app_config.h中打开PWM使用的宏,如下:
- 板级文件中需要确认输出的PWM引脚端口设置,PA6引脚对应的是PWM_PORTA,如下:



(3)使用时先调用pwm_ch0_init函数对PWM模块进行初始化后会输出默认设置的频率和占空比,再调用pwm_ch0_ctrl函数可动态设置PWM的占空比,pwm_ch0_freq_ctrl函数可以动态设置PWM的频率。相关函数的实现如下:


硬件PWM单路输出的函数定义在下面文件中
EMBED Package
2、硬件PWM多路输出
使用硬件PWM模块同时输出多路PWM,这个和硬件PWM单路输出的配置类似,且每路PWM都可以单独控制频率和占空比。下面是以A组(PWM_PORTA)的CH0到CH3这4个通道同时输出PWM为例,只需要在上面的硬件PWM单路输出的基础上修改初始化函数即可多路同时输出pwm,下面是初始化及频率和占空比的设置函数



使用时先调用pwm_mult_output_init函数对PWM模块进行初始化,需要修改占空比可以通过pwm_ctrl函数去动态设置占空比,pwm_freq_ctrl函数可以动态设置PWM的频率。硬件PWM多路输出的相关函数定义在下面文件中:
EMBED Package
杰理科技
2023年03月01日