开发者社区 问答 正文

Linux编程之杂项技术中如何将按键改为串口驱动?

已解决

Linux编程之杂项技术中如何将按键改为串口驱动?

展开
收起
去校区学技术 2022-04-03 18:09:34 1558 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 推荐回答

    1.打开内核的文件: $vi arch/arm/mach-omap2/board-am335xevm.c

    2.添加uart4、uart5功能脚定义代码(如果没有)。

    
    /* Module pin mux for uart3 */
    static struct pinmux_config uart3_pin_mux[] = 
    {
    {
    "spi0_cs1.uart3_rxd",
    OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP
    },
    {
    "ecap0_in_pwm0_out.uart3_txd",
    OMAP_MUX_MODE1 | AM33XX_PULL_ENBL
    },
    {
    NULL,
    0
    },
    };
     
    /* Module pin mux for uart4 */
    static struct pinmux_config uart4_pin_mux[] = 
    {
    {
    "uart0_ctsn.uart4_rxd",
    OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP
    },
    {
    "uart0_rtsn.uart4_txd",
    OMAP_MUX_MODE1 | AM33XX_PULL_ENBL
    },
    {
    NULL,
    0
    },
    };
    /* Module pin mux for uart5 */
    static struct pinmux_config uart5_pin_mux[] = 
    {
    {
    "mii1_col.uart5_rxd",
    OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP
    },
    {
    "rmii1_refclk.uart5_txd",
    OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
    },
    {
    NULL, 
    0
    },
    }
    
    

    3.添加初始化串口4、5代码(如果没有),如下蓝色部分。

    
    static void uart3_init(int evm_id, int profile)
    {
        printk("--------uart3_init\n");
     
        /* Configure Uart3*/
        setup_pin_mux(uart3_pin_mux);
        return;
    }
     
    static void uart4_init(int evm_id, int profile)
    {
        printk("--------uart4_init\n");
     
        /* Configure Uart4*/
        setup_pin_mux(uart4_pin_mux);
        return;
    }
     
    static void uart5_init(int evm_id, int profile)
    {
        printk("--------uart5_init\n");
     
        /* Configure Uart4*/
        setup_pin_mux(uart5_pin_mux);
        return;
    }
     
    

    4.添加串口4、5的注册,如下蓝色代码,并注释掉can功能和keys按键功能,如下红色代码。

    
     {uart1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
        {uart2_init, DEV_ON_BASEBOARD, PROFILE_ALL},
        {uart3_init, DEV_ON_BASEBOARD, PROFILE_ALL},
        {uart4_init, DEV_ON_BASEBOARD, PROFILE_ALL},
        {uart5_init, DEV_ON_BASEBOARD, PROFILE_ALL},
        //{d_can_init, DEV_ON_BASEBOARD, PROFILE_ALL},
        //{gpio_keys_init,DEV_ON_BASEBOARD, PROFILE_ALL},
        {gpio_led_init,DEV_ON_BASEBOARD, PROFILE_ALL},
        {NULL, 0, 0},
     
    
    

    5.重新编译内核,并更新系统就可以了。

    2022-04-03 18:42:34 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等