本文主要介绍怎么通过遥控接收机的信号控制单片机的IO口。试验器材:
天地飞WFT09II 9通道2.4G遥控器+接收机
STC15F104W单片机
这里接收机输出的是频率为50hz,周期为20ms的pwm波形,通过单片机外部中断口接收pwm信号,启用定时器/计数器对pwm高电平的持续时间进行计数。
Arduino中的pulseIn函数可以直截了当地读取pwm的值,可以参考其底层的实现方法,这里有一个链接介绍pulseIn函数读取pwm的思想。
arduino与pulseIn_arduino 非阻塞状态机-CSDN博客
文中关键部分:
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) {
pinMode(pin, INPUT);
uint32_t start = micros();
while(digitalRead(pin) == state && (micros() - start) < timeout);
while(digitalRead(pin) != state &