Air001芯片也像其他大多数单片机那样,有一些复用的GPIO口可以作为PWM用(实际上Air001的这种PWM口还真不算少),有PA0~PA7,PB0~PB3,PB6,共计13个。
这次我们以PA0为例,测试Air001的PWM工作方式。
一、对于Air001,可用的API
1、analogWrite
此函数用于设置 PWM 输出的占空比
// 函数名:analogWrite
// 参数 :ulPin:要设置的 PWM 输出引脚
// ulValue:占空比
void analogWrite(uint32_t ulPin, uint32_t ulValue);
2、analogWriteFrequency
这个函数是AirMCU 专用的API。此函数用于设置 analogWrite() 使用的频率。默认值为 PWM_FREQUENCY (1000),单位为赫兹。频率对于指定定时器的所有通道是通用的,为一个通道设置频率将影响同一定时器的所有其他通道。
// 函数名:analogWriteFrequency
// 参数 :freq:要设置的频率
void analogWriteFrequency(uint32_t freq);
3、analogWriteResolution
这个函数是AirMCU 专用的API。用于设置 analogWrite 参数的分辨率。默认为 8 位(范围为 0 至 255)。
// 函数名:analogWriteResolution
// 参数 :bits:要设置的分辨率
void analogWriteResolution(int bits);
二、下面我们开始测试
1、简单测试
以PA0为输出,每间隔5秒改变占空比。
示波器横向500μS单位,纵向2V单位测量。测量结果:
占空比参数=0,禁止PWM输出
占空比参数=64,占空比=25%:
占空比参数=128,占空比=50%:
占空比参数=255,占空比=100%:
可以看到测试结果与预期一致。
2、改变PWM频率测试
这次我们将测量频率改为2000Hz进行测试,占空比固定为50%
改变精度为12位,频率为1000Hz,占空比参数=1024,占空比应该为25%
到这里,我们已经完成了Air001开发板的PWM测试,同时也确认合宙提供的两个专用函数的使用效果。至于其它PWM口的输出测试以及改变频率对通道的影响,有兴趣的伙伴可以动手实验,进行验证。
最后附上测试工程: