嵌入式linux 通过获取设备树电亮LED

已经被舍弃的方法就不再写了(地址映射)

        搭建好设备驱动框架之后,需要对led灯引脚进行初始化,不管什么外设驱动,GPIO驱动基本都是必须的,而pinctrl和gpio子系统又是GPIO驱动所必须的。

pinctrl 子系统主要工作内容如下:

  • 获取设备树中 pin 信息。
  • 根据获取到的 pin 信息来设置 pin 的复用功能
  • 根据获取到的 pin 信息来设置 pin 的电气特性,比如上 / 下拉、速度、驱动能力等。
        对于我们使用者来说,我们只需要在设备树里面设置好某个pin的相关属性即可,其他初始化工作均由pinctrl子系统完成, pinctrl 子系统源码目录为 drivers/pinctrl
         1、创建对应的节点
        2、添加“fsl,pins”属性
        3、在“ fsl,pins ”属性中添加 PIN 配置信息
        
gpio子系统:
        只有复用为gpio的时候才可以使用gpio子系统。
         cd - gpios = <& gpio1 19 GPIO_ACTIVE_LOW >;
         属性值一共有三个,“ &gpio1 ”表示 CD 引脚所使用的 IO 属于 GPIO1 组,“ 19”表示 GPIO1 组的第 19 IO,“ GPIO_ACTIVE_LOW ”表示低电平有效.
        根据上面的子系统,我们就可以直接从设备树中获取设备的信息,从而实现led的初始化
        1,获取设备节点
        
struct device_node *nd;

nd = of_find_node_by_path("/leds");

        2,获取设备树中的gpio属性,并转化成gpio编号

int gpio;

gpip = of_get_named_gpio(nd,"led_gpio",设备树的第i个pin信息);

        3,设置为输入或者输出模式

//1   默认为高电平
//输出
ret = gpio_direction_output(gpioled.led_gpio, 1);
//输入
ret = gpio_direction_input(gpioled.led_gpio, 1);

        4,设置gpio引脚电平,或者获取引脚电平

gpio_set_value(dev->led_gpio, 0);	    /* 引脚设置为低电平 */

gpio_get_value(dev->led_gpio)            /* 获取引脚的电平 */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值