漫谈LiteOS之开发板-用户按键与LED灯(基于GD32450i-EVAL)

举报
星辰27 发表于 2019/10/31 10:32:21 2019/10/31
【摘要】 相信大家通过前面的学习,对GPIO、中断、LED的使用以及按键都不陌生,本文结合GPIO、用户按键以及LED灯进行了一个综合性的实验,来向大家介绍如何使用GPIO来控制LED灯和按键。希望对你有所帮助

4 用户按键与LED灯

1 GD32450i-EVAL硬件回顾

    GD32450i-EVAL开发板有4个按键,分别为Reset复位键、Wakeup键、Tamper键和User按键。同时还有3个LED灯,分贝为LED1、2、3。

2 目的

    通过用户按键控制LED的实验,即使用四个按键中的Tamper按键进行对于LED1的控制。这里与中断的不同的是使用GPIO轮询模式来检测IO端口的输入值,如果输入为低电平,将等指定待延时时间。之后再次检测IO端口的输入状态。如果输入仍然为低电平,表明按键成功按下,翻转LED1的输出状态。通过上述方式,来学习使用GPIO来控制LED灯和按键,同时学会使用SysTick来控制时延。当然上述实验也可以使用不同的按键控制不同的LED灯。只需要对函数参数进行简单的修改即可。

3 硬件原理

3.1 LED灯原理

    如图1所示,LED灯的阴极接地,而阳极通过电阻后接到了MCU的PF引脚上,因此可见当引脚PF(GPIO)输入为高电平时LED灯点亮,当其输入为低电平时LED灯熄灭。

1 LED灯.png

图1  LED灯原理图

3.2 按键驱动原理

    如图2所示,该图显示了GD32450i-EVAL开发板的除复位reset按键的其余3个按键Wakeup、Tamper、以及USER按键。其原理相同,以Tamper为例,都是当按键按下时,引脚PC13(GPIO)此时接到GND上,当按键弹起时,引脚PC13(GPIO)接到高电平上。

2按键+LED.png

图2 按键驱动原理图

4 程序简介

    其程序大部分与中断控制LED灯的方式相似但是控制方式是轮训的方式,具体如下:

    // 初始化按键

    gd_eval_key_init(KEY_TAMPER,KEY_MODE_GPIO);

    //配置SysTick时钟定时器

    systick_config();

    // 初始化LED灯

    gd_eval_led_init(LED1);

    while(1){

    // 查看Tamper按键的状态

        if(RESET == gd_eval_key_state_get(KEY_TAMPER)){

            //延时100ms

            delay_1ms(100);

            //再次查询Tamper按键状态

            if(RESET == gd_eval_key_state_get(KEY_TAMPER)){

                //为位操作寄存器和位清除寄存器写数据

                gpio_bit_write(LED1_GPIO_PORT, LED1_PIN, (bit_status)((1 - gpio_output_bit_get(LED1_GPIO_PORT, LED1_PIN))));

            }

        }

    }

5 实验效果

     本实验中的Tamper按键相当于一个LED1的“开关”。当我们将程序下载到开发板后,首先按reset按键。。按下Tamper按键会使得LED1点亮,当再次按下Tamper按键时,LED1将会熄灭。具体实验效果如下图所示。

Tamper按键按下.jpg

图3 LED灯点亮

按键弹起.jpg

 图4 LED灯熄灭

主文博客链接:https://bbs.huaweicloud.com/blogs/124244

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。