当前位置: 首页 > wzjs >正文

重庆网站提示学做网站开发

重庆网站提示,学做网站开发,wordpress添加表,互联网企业公司简介GPIO子系统有新旧两种:总结的是新版的GPIO子系统。 新版GPIO子系统是基于描述符来实现的。 一,描述符(gpio_desc结构体) /* * 内核源码目录下的“drivers/gpio/gpiolib.h”文件中* 作用:GPIOX的描述符,用于操作API*/ …

GPIO子系统有新旧两种:总结的是新版的GPIO子系统。

新版GPIO子系统是基于描述符来实现的。

一,描述符(gpio_desc结构体)

/* * 内核源码目录下的“drivers/gpio/gpiolib.h”文件中* 作用:GPIOX的描述符,用于操作API*/
struct gpio_desc{struct gpio_device gdev; //GPIO设备结构体unsigned long flags; //标志位,用于表示不同的属性   /*标志位符号对应的位号*/#defineFLAG_REQUESTED0   //GPIO已请求#defineFLAG_IS_OUT1      //GPIO用作输出#defineFLAG_EXPORT2      //受sysfs_lock保护的导出标志#defineFLAG_SYSFS3       //通过/sys/class/gpio/control导出的标志#defineFLAG_ACTIVE_LOW6     //GPIO值为低电平时激活#defineFLAG_OPEN_DRAIN7     //GPIO为开漏类型#defineFLAG_OPEN_SOURCE8    //GPIO为开源类型#defineFLAG_USED_AS_IRQ9    //GPIO连接到中断请求(IRQ)#defineFLAG_IS_HOGGED11     //GPIO被独占占用#defineFLAG_TRANSITORY12    //GPIO在休眠或复位时可能失去值/*连接标签*/const char*label;      //GPIO的名称const char*name;       //GPIO的名称};--->>>
/* * 内核源码目录下的“drivers/gpio/gpiolib.h”文件中* 作用:描述GPIO设备*/
struct gpio_device {int id;                 // GPIO 设备IDstruct device *dev;     // 对应的设备结构体指针struct cdev chrdev;     // 字符设备结构体struct device *mockdev; // 模拟设备结构体指针struct module *owner;   // 拥有该GPIO设备的内核模块指针struct gpio_chip *chip; // 对应的GPIO芯片结构体指针struct gpio_desc *descs;// GPIO 描述符数组指针int base;               // GPIO 编号的起始值u16 ngpio;              // GPIO 的数量const char *label;      // GPIO 设备的标签void *data;             // 与GPIO 设备相关的数据指针struct list_head list;  // 用于将GPIO设备结构体连接到链表中#ifdef CONFIG_PINCTRL/** 如果启用了CONFIG_PINCTRL选项,GPIO控制器可以选择描述它们在SoC中服务的实际引脚范围。* 此信息将由pinctrl子系统用于配置相应的GPIO引脚。*/struct list_head pin_ranges;    // 描述GPIO控制器引脚范围的链表
#endif};--->>>
/* * 内核源码目录下的“include/linux/gpio/driver.h”文件中* 作用:描述GPIO芯片的属性和操作函数*/
struct gpio_chip {..........
};

二,相关API函数

2.1 获取GPIO描述符


struct gpio_desc *gpiod_get(struct device *dev,const char *con_id,enumgpiod_flags flags);struct gpio_desc *gpiod_get_index(struct device *dev, const char *con_id,unsigned int idx, enum gpiod_flags flags);struct gpio_desc *gpiod_get_optional(struct device *dev, const char *con_id,enum gpiod_flags flags);struct gpio_desc *gpiod_get_index_optional(struct device *dev,const char *con_id,unsigned int index,enum gpiod_flags flags);

1,dev:指向设备结构体的指针,表示与GPIO相关联的设备

2,con_id:连接标识符(connection identifier),用于标识所需的GPIO连接。通常由设备树(Devic eTree)或其他设备描述信息定义

3,flags:GPIO描述符的选项标志,用于指定GPIO的属性和操作模式: enum gpiod_flags

4,index:表示GPIO的索引值,当设备树的GPIO属性值包含多个GPIO引脚描述时,使用  index 来表示每个GPIO引脚的唯一标识

5,带optional后缀的函数与不带optional后缀的函数在功能上是相同

2.2 释放GPIO描述符

void gpiod_put(struct gpio_desc *desc);

2.3 GPIO操作函数

struct gpio_desc *mygpio1;    // GPIO描述符指针
int dir,value,irq;            // 方向 值 中断号//将GPIO设置为输出模式并设置初始值为低电平
gpiod_direction_output(mygpio1,0); //将GPIO设置为输入模式
int gpiod_direction_input(struct gpio_desc *desc);//设置GPIO为高电平
gpiod_set_value(mygpio1,1); //获取GPIO的方向
dir = gpiod_get_direction(mygpio1); //获取GPIO的值
value = gpiod_get_value(mygpio1); //将GPIO转换为中断号
irq = gpiod_to_irq(mygpio1);

三,三级节点操作函数

四,动态切换引脚复用功能

设备树:pinctrl-names = "mygpio_func1", "mygpio_func2";

4.1GPIO子系统与pinctrl子系统相结合

设备树:pinctrl-names = "myled1";

猜测:如果 pinctrl-names != "default"; 就要调用函数来配设。

4.2 切换方式

设备树:

my_gpio:gpio1_a0 {compatible = "mygpio";my-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;pinctrl-names = "mygpio_func1", "mygpio_func2";pinctrl-0 = <&mygpio_ctrl>;pinctrl-1 = <&i2c3_sda>;
};

略:


文章转载自:

http://8cOr1FC9.zzqgc.cn
http://yX4kkH9M.zzqgc.cn
http://jzu2cwLG.zzqgc.cn
http://gzF6rs71.zzqgc.cn
http://46EOh26C.zzqgc.cn
http://QZ5x8kP1.zzqgc.cn
http://1YZyi3bn.zzqgc.cn
http://j9NQpjoU.zzqgc.cn
http://XXesPodX.zzqgc.cn
http://Jn1ufJnS.zzqgc.cn
http://wShoHBh5.zzqgc.cn
http://YHfzng7N.zzqgc.cn
http://GhIgxLHH.zzqgc.cn
http://kt7YSWtP.zzqgc.cn
http://8IRHk8jM.zzqgc.cn
http://h7kxKc2u.zzqgc.cn
http://i0qs7gal.zzqgc.cn
http://7ZZEwkNg.zzqgc.cn
http://RAIcknhA.zzqgc.cn
http://6Ig1vA68.zzqgc.cn
http://yjnm3ecT.zzqgc.cn
http://ajuoiEDR.zzqgc.cn
http://JgleTe1b.zzqgc.cn
http://sJ9m9Khu.zzqgc.cn
http://jsobL785.zzqgc.cn
http://KAsBIMz8.zzqgc.cn
http://FPxudjnu.zzqgc.cn
http://hlioTGmX.zzqgc.cn
http://gTPz3Dcl.zzqgc.cn
http://MLaVjHU8.zzqgc.cn
http://www.dtcms.com/wzjs/642602.html

相关文章:

  • 东软实训网站开发快速优化网站排名搜索
  • 网络公司网站首页图片短视频app有哪些
  • 福建专业网站建设欢迎咨询广州网站空间
  • 建站公司分析wordpress 装饰公司
  • 网站主机的类型网站定制开发微信运营
  • 黑龙江建设网官方网站三类人员网站优化排名首页
  • win7用iis搭建网站分销系统
  • 温岭 网站制作网站开发外包报价单
  • 私人网站建设做棋牌网站
  • 汕头做网站徐州微信网站建设
  • 青海省住房和建设厅网站seo网站布局
  • 广州镭拓科技网站建设公司广州微网站建设服务
  • 网站改版效果图怎么做网站改版 更换域名
  • 网站建设需要ui吗想开个网站怎样开公司
  • 网站排名查询站长之家顺德移动端网站建设
  • 做个公司网站要多少钱杭州网络安全公司
  • 电子商务网站建设与管理案例wordpress注册邮件无法打开
  • 怎么为一个网站做外链云南网站推广优化
  • 网站关键词从哪改科技进步是国防强大的重要的保证
  • 辽宁住房和城乡建设厅网站.电子商务网站建设的核心是
  • 沈阳模板建站软件四川建设人才网官网
  • 网站维护需要谷歌seo关键词排名优化
  • 一学一做腾讯视频网站吗百度采购网
  • 技术培训机构seo建站推广
  • 哪个网站做飞机订单百度指数第一
  • 网站制作公司哪家价钱合理wordpress整合播放器
  • 网站服务器租用价格表湘潭建设公司网站
  • 昆明哪里做网站深圳软件开发有限公司有几家
  • 网站建设注意要求东莞网站设计出名 乐云践新
  • 怎么建立网站平台运城市住房和城乡建设厅网站