Nodemcu freertos 学习之路 -- GPIO口控制LED灯开关
2018-01-12 09:01
435 查看
1.环境介绍
如果创建项目请看第2篇 led闪烁. ESP8266实现开关功能。这里利用线程获取gpio的状态. 从而控制led灯 亮或灭
2.软件消抖
关于led灯的控制和GPIO口状态的读取 在第2篇中都有介绍了,这里主要处理软件消抖
软件消抖的原理是,当获取到按键按下的状态时。延迟20ms再获取一次状态,当第二次的状态同样为按下时。就判断为没有抖动了。即为按下状态。最后等待按键松开即可。
代码
void key_handler_task(void *pvParameters){
key_init();
for(;;){
uint32_t bit;
if (GPIO_INPUT_GET(15) == 0x01){
vTaskDelay(20 / portTICK_RATE_MS);
if( GPIO_INPUT_GET(15) == 0x01){
led_toggle();
while( GPIO_INPUT_GET(15) == 0x01 );
}
}
vTaskDelay(100 / portTICK_RATE_MS);
}
vTaskDelete(NULL);
}
3.查看结果
查看到led of led on 同时LED灯跟据开关次数不停迁换
如果创建项目请看第2篇 led闪烁. ESP8266实现开关功能。这里利用线程获取gpio的状态. 从而控制led灯 亮或灭
2.软件消抖
关于led灯的控制和GPIO口状态的读取 在第2篇中都有介绍了,这里主要处理软件消抖
软件消抖的原理是,当获取到按键按下的状态时。延迟20ms再获取一次状态,当第二次的状态同样为按下时。就判断为没有抖动了。即为按下状态。最后等待按键松开即可。
代码
void key_handler_task(void *pvParameters){
key_init();
for(;;){
uint32_t bit;
if (GPIO_INPUT_GET(15) == 0x01){
vTaskDelay(20 / portTICK_RATE_MS);
if( GPIO_INPUT_GET(15) == 0x01){
led_toggle();
while( GPIO_INPUT_GET(15) == 0x01 );
}
}
vTaskDelay(100 / portTICK_RATE_MS);
}
vTaskDelete(NULL);
}
3.查看结果
查看到led of led on 同时LED灯跟据开关次数不停迁换
相关文章推荐
- Nodemcu freertos 学习之路 -- 利用中断 控制led开关
- Nodemcu freertos 学习之路 -- LED闪烁灯
- [转载]STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- 实验 使用 vivado zedboard GPIO 开关 开控制 LED
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- 实验 使用 vivado zedboard GPIO 开关 开控制 LED
- STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- ARM嵌入式学习--OK6410裸板程序--1.GPIO控制LED
- S3C2440学习之GPIO按键控制LED灯
- (17/06/25)STM32学习->GPIO输出控制LED
- AndroidThings学习笔记--gpio控制Led和Button
- CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)
- 继续树莓派GPIO:两片74HC595控制一个8x8LED点阵显示爱心
- mx53 linux gpio控制led
- 树莓派学习笔记——yeelink 远程控制LED
- NodeMCU实现远程控制LED灯
- 开关控制LED的亮灭