查看: 795|回复: 0

MX6ULL 按键输入笔记

[复制链接]
  • TA的每日心情
    慵懒
    2020-1-19 10:06
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-2-12 12:23:20 | 显示全部楼层 |阅读模式
    分享到:
    一、硬件原理图分析
    按键KEY0链接到了UART1_CTS引脚上。默认情况下UART1_CTS为高,当按下KEY0以后UART1_CTS为低。
    二、实验程序编写
    1、设置UART1_CTS复用为GPIO1_IO18
    2、设置UART1_CTS的电气属性。
    3、配置GPIO1_IO08为输入模式。
    4、读取按键值,也就是GPIO1_IO08的高低电平
        注:在程序防抖过程中应加入防抖操作
    三、加上清除BSS段,代码不运
    __bss_start = 0X87800289。对于32位的SOC来说,一般访问是4字节访问的。0X0,0X4,0X8,0XC。芯片处理的时候以4字节访问,因此会从0X878000288开始清除BSS段。然而0X878000288不属于BSS段。所以我们需要对__bss_start进行四字节对其。按照四字节对其的原理,__bss_start=0X8780028C。所以需要设置__bss_start为四字节对其。
    附录:代码分析
    Bsp_key,h
    #ifndef __BSP_KEY_H
    #define __BSP_KEY_H
    #include "fsl_common.h"
    #include "fsl_iomuxc.h"
    #include "MCIMX6Y2.h"
    /* 按键值 */
    enum keyvalue{
        KEY_NONE = 0,
        KEY0_VALUE,
    };
    /* 函数声明 */
    void key_init(void);
    int read_key(void);
    int key_getvalue(void);
    #endif
    Bsp_key.c
    #include "bsp_key.h"
    #include "bsp_delay.h"
    #include "bsp_gpio.h"
    /* 初始化按键 */
    void key_init(void)
    {
        gpio_pin_config_t key_config;
        IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0); /*复用为GPIO1_IO18 */
        IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0XF080);
        /* GPIO初始化 */
        key_config.direction = kGPIO_DigitalInput;
        gpio_init(GPIO1, 18, &key_config);
       
    }
    /* 读取按键值
    * 返回值:0 按下,1 未按下
    */
    int read_key(void)
    {
        int ret = 0;
        ret = gpio_pinread(GPIO1, 18);  
        return ret;
    }
    int key_getvalue(void)
    {
        int ret = 0;
        static unsigned char release = 1; /* 为1表示按键释放 */
        if((release==1) &&  (gpio_pinread(GPIO1, 18) == 0)) /* 按下 */
        {
            delay(10);
            release = 0;
            if(gpio_pinread(GPIO1, 18) == 0) /* 如果延时10ms以后KEY0还是0,表示按键有效 */
            {
                ret = KEY0_VALUE;
            }
        }
        else if(gpio_pinread(GPIO1, 18) == 1) /* 未按下 */
        {
            ret = KEY_NONE;
            release = 1;
        }
        return ret;
    }

    图片11.png
    图片12.png
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 19:46 , Processed in 0.106065 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.