0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

按键驱动的实验

汽车电子技术 来源:程序猿搬砖 作者:坏人 2023-03-02 16:25 次阅读

按键驱动实验与LED以及Beep在整体使用逻辑上一样,只是按键是输入模式。

找到按键使用的引脚

图片

查看底板原理图可知,按键KEY0,断开状态时KEY0是高电平,接通是低电平。

图片

查看IO引用图可知,KEY0使用的是UART1 CTS引用。

查看I.MX6ULL参考手册,UART1 CTS复用为GPIO之后是GPIO01_IO18:

图片

初始化GPIO01_IO18,配置电气属性并设置为输入

// 将UART1_CTS_B利用为GPIO01_IO18
IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);
// 配置电气属性
IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, CONST_GPIO_INPUT_PAD_VALUE);
// 配置GPIO方向以及默认值
GPIO_Init(GPIO1, 18, (GPIO_CONFIG){GPIO_DIRECTION_INPUT, 0});

读取按键状态

复用并初始化完GPIO1_IO18后通过读取GPIO1_IO18的电平状态就可以知道当前按键状态了。按键接下时为低电平,按钮弹起时为高电平。

但是在读取按键状态时有一个问题,就是由于按键在按下时短时间内的电平状态可能不稳定,在读取的时候需要做一个延时读取操作,防止读取的异常的电平状态,它的读取代码如下:

if (GPIO_RedValue(GPIO1, 18) == 0)
{
    //此时的电平是低电平,表示按钮是接下状态
    //为了防止电平抖动,延迟10ms再读取一下电平状态,如果还是按下表示按钮按下并且稳定
    Delay(10);
    if (GPIO_RedValue(GPIO1, 18))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
else
{
    // 按钮松开
    return 0;
}

修改主程序逻辑

这里改成按键按下则LED亮同时BEEP

Clk_Init();
Led_Init();
Beep_Init();
Key0_Init();
while (1)
{
    Delay(10);
    if (Key0_GetValue())
    {

        Led_On();
        Beep_On();
    }
    else
    {
        Led_Off();
        Beep_Off();
    }
}

return 0;

编译,烧写验证

make install
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22449

    浏览量

    645875
  • 模式
    +关注

    关注

    0

    文章

    63

    浏览量

    13283
  • 按键驱动
    +关注

    关注

    0

    文章

    11

    浏览量

    7100
收藏 人收藏

    评论

    相关推荐

    Linux下如何使用中断的方式来驱动按键

    Linux下的按键输入驱动开发模板一文中介绍了基本的按键输入捕获流程,这里将进一步介绍如何使用中断的方式来驱动按键,同时通过定时器实现
    发表于 07-29 08:59 845次阅读

    STM32按键中断实验

    按键中断实验实验2是按键查询一、实验原理1、按键使用查询和中断模式的 对于
    发表于 08-13 06:05

    【嵌入式开发教程4】手把手教你做平板电脑-设备按键驱动实验教程

    设备按键驱动实验教程——疯壳·嵌入式平板开发 第一节 引言 --- 如何看一个 GPIO 按键的电路原理图 下图来源于文档 3128_sdk_a02_20170325.pdf
    发表于 06-06 10:46

    【嵌入式开发教程4】疯壳·平板电脑-设备按键驱动实验教程

    设备按键驱动实验教程——疯壳·嵌入式平板开发 第一节 引言 --- 如何看一个 GPIO 按键的电路原理图 下图来源于文档 3128_sdk_a02_20170325.pdf
    发表于 07-21 15:04

    【开发教程4】手把手教你做平板电脑-设备按键驱动实验教程

    设备按键驱动实验教程——疯壳·嵌入式平板开发 第一节 引言 --- 如何看一个 GPIO 按键的电路原理图 下图来源于文档 3128_sdk_a02_20170325.pdf 中第 9
    发表于 08-11 14:23

    小键盘+LED驱动实验

    小键盘+LED驱动实验:一.实验目的学习小键盘驱动原理和LED显示原理,掌握轮询方式获取键值的原理,理解驱动程序采用轮询方式和中断方式的区别
    发表于 09-29 11:53 28次下载

    【单片机实验按键实验(一,二,三)

    按键实验 : 目的:通过按键控制其他元器件 实验一 K1~K4控制LED移位 目的:按下独立按键K1~K4,可分别上下控制连接在P0,P2端
    发表于 11-23 19:45 2061次阅读

    MCU之按键驱动 -剥离按键驱动和事件处理

    ButtonDrive 自己写的一个按键驱动,支持单双击、连按、长按;采用回调处理按键事件(自定义消抖时间),使用只需3步,创建按键按键
    发表于 10-28 19:21 18次下载
    MCU之<b class='flag-5'>按键</b><b class='flag-5'>驱动</b> -剥离<b class='flag-5'>按键</b><b class='flag-5'>驱动</b>和事件处理

    51单片机的自学之路(5)——独立按键和矩阵按键实验

    独立按键实验按键实验,首先需要知道的,就是关于按键的消抖。一般的情况下,消抖分为两种:硬件和软件消抖。下面做
    发表于 11-23 16:36 10次下载
    51单片机的自学之路(5)——独立<b class='flag-5'>按键</b>和矩阵<b class='flag-5'>按键</b><b class='flag-5'>实验</b>

    GPIO输入驱动实验按键控制

    GPIO输入驱动实验按键控制写在前面:和beep实验一样,在已有的工程框架上加功能就行了,冲!!!对了这次会对gpio的操作编写成一个函数集合,方便调用,大家留意。1、bsp下新建k
    发表于 12-20 19:14 1次下载
    GPIO输入<b class='flag-5'>驱动</b><b class='flag-5'>实验</b>-<b class='flag-5'>按键</b>控制

    实验8:矩阵按键

    实验8:矩阵按键
    发表于 12-20 19:43 15次下载
    <b class='flag-5'>实验</b>8:矩阵<b class='flag-5'>按键</b>

    stm32按键实验讲解

    按键实验GPIO引脚图及相关配置按键初始化函数按键扫描函数按下按键给出对应响应GPIO引脚图及相关配置图1由原理图,可以看出各
    发表于 12-27 19:09 6次下载
    stm32<b class='flag-5'>按键</b><b class='flag-5'>实验</b>讲解

    CC2530按键控制LED开关实验

      实验目的   1)、通过实验掌握CC2530芯片GPIO的配置方法   2)、掌握Led驱动电路及开关Led的原理   3)、掌握检测按键的方法
    发表于 04-11 15:32 5次下载

    按键中断实验是什么

    前面的按键实验是通过死循环一直读取按钮电平值来判断是否有按下按钮,接下来将使用另外一个更优雅的方式实验按键按下功能-中断。
    的头像 发表于 03-02 16:21 996次阅读
    <b class='flag-5'>按键</b>中断<b class='flag-5'>实验</b>是什么

    基于状态机的按键驱动设计

    按键作为单片机的输入设备,可以向单片机输入数据、传输命令等,是设置参数和控制设备的常用接口。所以,学会按键驱动也是初学者必不可少的能力。说到按键驱动
    的头像 发表于 07-04 11:43 681次阅读
    基于状态机的<b class='flag-5'>按键</b><b class='flag-5'>驱动</b>设计