pwm采集测试用例
时间: 2023-06-22 12:23:28 浏览: 75
以下是一个基于Arduino的PWM信号采集测试用例,可以参考:
```c++
const int pinPWM = 9; // PWM信号输入引脚
const int pinLED = 13; // LED指示灯引脚
volatile unsigned long pulseWidth = 0; // 脉宽变量
volatile unsigned long lastTime = 0; // 上次采样时间
volatile bool isDone = false; // 采样完成标志
void setup() {
pinMode(pinPWM, INPUT); // 将PWM信号输入引脚设为输入模式
pinMode(pinLED, OUTPUT); // 将LED指示灯引脚设为输出模式
Serial.begin(9600); // 初始化串口
}
void loop() {
if (!isDone) { // 如果采样没有完成
digitalWrite(pinLED, HIGH); // 点亮LED指示灯
lastTime = micros(); // 记录当前时间
while (digitalRead(pinPWM) == HIGH); // 等待PWM信号下降沿
pulseWidth = micros() - lastTime; // 计算脉宽
isDone = true; // 标记采样完成
digitalWrite(pinLED, LOW); // 熄灭LED指示灯
}
if (isDone) { // 如果采样已经完成
Serial.println(pulseWidth); // 输出脉宽
isDone = false; // 标记采样未完成
}
}
```
该测试用例通过Arduino的`pulseIn()`函数实现了对PWM信号的采集,并通过串口输出脉宽值。其中,`pinPWM`为PWM信号输入引脚,`pinLED`为LED指示灯引脚,`pulseWidth`为脉宽变量,`lastTime`为上次采样时间,`isDone`为采样完成标志。在`loop()`函数中,当采样未完成时,LED指示灯点亮,并等待PWM信号下降沿,然后计算脉宽并标记采样完成;当采样已完成时,输出脉宽并标记采样未完成。