开发者社区> 问答> 正文

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

已解决

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

展开
收起
去校区学技术 2022-04-03 18:09:34 1533 0
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
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载