PwmOut
使用 PwmOut 接口控制 PWM 信号的频率和占空比。
提示:
- 首先设置循环时间,然后使用 write() 函数的相对时间段或使用 pulsewidth() 函数的绝对时间段设置占空比。
- 默认时间为 0.020 秒,默认脉冲宽度为 0。
PwmOut 类参考
公共成员函数 | |
PwmOut (PinName pin) | |
void | write (float value) |
float | read () |
void | period (float seconds) |
void | period_ms (int ms) |
void | period_us (int us) |
void | pulsewidth (float seconds) |
void | pulsewidth_ms (int ms) |
void | pulsewidth_us (int us) |
PwmOut & | operator= (float value) |
PwmOut & | operator= (PwmOut &rhs) |
operator float () |
受保护的成员函数 | |
void | lock_deep_sleep () |
void | unlock_deep_sleep () |
受保护的属性 | |
pwmout_t | _pwm |
bool | _deep_sleep_locked |
PwmOut hello, world
此代码示例使用默认时间段 0.020 秒,并将占空比从 0 % 增加到 100 %,增量为 10 %。
#include "mbed.h"
PwmOut led(LED1);
int main() {
// specify period first
led.period(4.0f); // 4 second period
led.write(0.50f); // 50% duty cycle, relative to period
//led = 0.5f; // shorthand for led.write()
//led.pulsewidth(2); // alternative to led.write, set duty cycle time in seconds
while(1);
}
PwmOut 代码示例
示例一
此代码示例将周期(以秒为单位)和占空比设置为浮点周期的百分比(范围:0 到 1)。此代码段的作用是使 LED2 在 4 秒周期内闪烁 50 %,两秒钟开启,两秒钟关闭。
#include "mbed.h"
PwmOut led(LED2);
int main() {
// specify period first, then everything else
led.period(4.0f); // 4 second period
led.write(0.50f); // 50% duty cycle
while(1); // led flashing
}
示例二
下面的示例执行相同的操作,但不是将占空比指定为周期的相对百分比,而是将其指定为以秒为单位的绝对值。在这种情况下,我们有一个四秒的周期和一个两秒的占空比,这意味着 LED 将开启两秒钟并关闭两秒钟。
#include "mbed.h"
PwmOut led(LED2);
int main() {
// specify period first, then everything else
led.period(4.0f); // 4 second period
led.pulsewidth(2); // 2 second pulse (on)
while(1); // led flashing
}