mbed库与函数支持PWM端口,PWM不是只有一个变量(如数字或模拟输出)需要控制,而是两个变量,即周期和脉冲宽度或占空比。
通过PwmOut可以创建PWM对象,并为其分配管脚。“=”可以作为简化的表达形式,用来代替write()函数。
PwmOut 创建一个PwmOut对象,可连接到指定引脚
Write 设置输出占空比,指定为一个归一化的浮点数(0.0- 1.0)
read 返回当前输出占空比,测得的数为归一化的浮点数(0.0-1.0)
period 设置PWM周期,以秒为单位(float),保持相同的点空比
period_ms 设置PWM周期,以毫秒为单位(int),保持相同的点空比
period_us 设置PWM周期,以微秒为单位(int),保持相同的点空比
PulseWidth 设置PWM脉冲宽度,以秒为单位(float),保持相同的工作周期
PulseWidth_ms 设置PWM脉冲宽度,以毫秒为单位(int),保持相同的工作周期
PulseWidth_us 设置PWM脉冲宽度,以微秒为单位(int),保持相同的工作周期
operator = write()的简写形式
现在要在SAMD21上实pwm最好的方法是通过LED来观察,
那么D21板子上LED究竟支持pwm么?
LED在PB30上:
经查其管脚有如下功能:
以下是程序:
#include "mbed.h"
PwmOut PWM(PB30);
int main()
{
PWM.period(0.01);
PWM=0.5;
}
就简单的两句实现了PWM的功能,我觉得mbed将来大有前途,前提是那USB库及RTOS支持ATMEL的板子。
以下是运行的截图:
下图是编译通过的截图:
|