linux GPIO(四)

LED 灯使用了 GPIO1_IO03 这个 PIN
1、添加 pinctrl 节点
        打开 imx6ull-alientekemmc.dts,iomuxc 节点的 imx6ul-evk 子节点下创建一个名为“pinctrl_led”的子节点,节点前缀一定要为“pinctrl_”
 

    /* zuozhongkai LED */
pinctrl_led: ledgrp {
   fsl,pins = <
       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0x10B0 /* LED0 */
    >;
 };

2、添加 LED 设备节点
在根节点“/”下创建 LED 灯节点,节点名为“gpioled”

	gpioled {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "atkalpha-gpioled";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_led>;
		led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
		status = "okay";
	};

3.检查PIN是否被其他外设使用

4.进入“/proc/device-tree”目录中,检查节点是否存在

LED 灯驱动程序编写

/* newchrled设备结构体 */
struct newchrled_dev{
	dev_t devid;			/* 设备号 	 */
	struct cdev cdev;		/* cdev 	*/
	struct class *class;		/* 类 		*/
	struct device *device;	/* 设备 	 */
	int major;				/* 主设备号	  */
	int minor;				/* 次设备号   */
	struct device_node *nd; /* 设备节点 */
    int led_gpio; /* led 所使用的 GPIO 编号 */   
};
init初始化函数
{
//获取设备树信息
    获取设备节点: gpioled
    获取设备树中的 gpio 属性,得到 LED 所使用的 LED 编号

    设置 GPIO1_IO03 为输出

//字符设备驱动相关
    创建设备号
    初始化 cdev
    添加一个 cdev 
    创建class
    创建device
}
 
exit退出函数
{
    取消REG映射
    删除 cdev
    注销设备号
    device_destroy
    class_destroy
}
write函数
{
    gpio_set_value(dev->led_gpio, 0); /* 打开 LED 灯 */
    gpio_set_value(dev->led_gpio, 1); /* 关闭 LED 灯 */
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值