女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

gpio子系統(tǒng)API詳解

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:Jasonangel ? 2023-09-27 17:17 ? 次閱讀

gpio 子系統(tǒng) API

gpio 子系統(tǒng)中操作一個(gè) GPIO 需要如下幾步:

1、of_find_compatible_node
2、of_get_named_gpio
3、gpio_request
4、控制gpio(gpio_direction_input、gpio_direction_output……)
5、gpio_free

1)of_find_compatible_node 函數(shù)在設(shè)備樹中根據(jù) device_type 和 compatible 這兩個(gè)屬性查找指定的節(jié)點(diǎn),此處是為了獲取在設(shè)備樹中設(shè)置的 GPIO 的節(jié)點(diǎn)句柄。如果其他地方有獲得句柄,那么可以直接使用這個(gè)句柄。

2) of_get_named_gpio ,獲取所設(shè)置的 gpio number。

3) gpio_request ,請(qǐng)求這個(gè) gpio 。如果其他地方請(qǐng)求了這個(gè) gpio,還沒有釋放,那么我們會(huì)請(qǐng)求不到。

4)請(qǐng)求到這個(gè) gpio 以后,我們就可以對(duì)它進(jìn)行操作,比如獲取到它的值,設(shè)置它的值。

5)使用完以后,釋放這個(gè) gpio。

原理圖:

圖片

博主手里有一個(gè) 正點(diǎn)原子 imx6ull 開發(fā)板,查原理圖,發(fā)現(xiàn)蜂鳴器直連的 GPIO 是 GPIO5_1。我把此 IO 口拉低,蜂鳴器就會(huì)響。

在設(shè)備樹中增加如下代碼(imx6ull-alientek-emmc.dts)

test:test {
 compatible = "Jason_hello";
 hello = < &gpio5 1 GPIO_ACTIVE_HIGH >;
};

設(shè)置 GPIO 為 GPIO5_1,高電平有效,但實(shí)際上第三個(gè)參數(shù)我沒有使用。

gpio.c

#include < linux/init.h >
#include < linux/kernel.h >
#include < linux/module.h >
#include < linux/gpio.h >
#include < linux/of.h >
#include < linux/of_gpio.h >

static int __init mypinctrl_init(void)
{
 int gpionum = 0;
 int ret = 0;
 struct device_node *node = NULL;
 
 node = of_find_compatible_node(NULL,NULL,"Jason_hello");
 if(!node){
  printk("get node errorn");
  return ret;
 }
 
 gpionum = of_get_named_gpio(node,"hello",0);
 if(gpionum < 0){
  printk("get gpionum errorn");
  return ret;
 }
 
 ret = gpio_request(gpionum,"hello");
 if(ret){
  printk("gpio_request errorn");
  return ret;
 }
  
 printk("gpio(%d) value = %dn",gpionum,ret);
  
 ret = gpio_get_value(gpionum);
  
 printk("gpio(%d) value = %dn",gpionum,ret);
  
 gpio_direction_output(gpionum,0);  // 設(shè)置 gpio 輸出低電平
  
 ret = gpio_get_value(gpionum);
  
 printk("gpio(%d) value = %dn",gpionum,ret);
  
 return 0;
}

static void __exit mypinctrl_exit(void)
{
 printk("%sn",__func__);
}

module_init(mypinctrl_init);
module_exit(mypinctrl_exit);

MODULE_LICENSE("GPL");

Makefile

KERNELDIR := /home/book/linux/tool/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek

CURRENT_PATH := $(shell pwd)

obj-m := gpio.o

build: kernel_modules

kernel_modules:
 $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
 $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean

在 Linux 內(nèi)核源碼根目錄中輸入 make dtbs,編譯一份設(shè)備樹,下載進(jìn)開發(fā)板。

在 kernel/drivers/misc/ 中新建文件夾,命名為 mygpio,里面放置 gpio.c 和 Makefile。然后輸入 make 編譯出 gpio.ko。然后拷貝進(jìn)板子,insmod 上去,可以發(fā)現(xiàn)蜂鳴器有響。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1408

    瀏覽量

    41088
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11456

    瀏覽量

    212755
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1559

    瀏覽量

    63511
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    一文搞懂Linux pinctrl/gpio子系統(tǒng)

    GPIO的寄存器操作。分享給剛剛接觸外設(shè)bsp的小伙伴們。當(dāng)然后面有時(shí)間還會(huì)分享GPIO子系統(tǒng)框架和pinctrl子系統(tǒng)框架,先知道黑盒怎么使用,然后咱再打開仔細(xì)瞅瞅。
    發(fā)表于 06-09 09:52 ?3306次閱讀

    Linux LED子系統(tǒng)詳解

    Linux LED子系統(tǒng)詳解
    的頭像 發(fā)表于 06-10 10:37 ?1793次閱讀
    Linux LED<b class='flag-5'>子系統(tǒng)</b><b class='flag-5'>詳解</b>

    飛凌嵌入式ElfBoard ELF 1板卡-Pinctrl和GPIO子系統(tǒng)GPIO子系統(tǒng)

    軟件控制設(shè)備上的GPIO信號(hào)。在Linux的GPIO子系統(tǒng)中,提供了一組API函數(shù)來管理和操作GPIO引腳。以下是一些常用的
    發(fā)表于 03-24 15:41

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Pinctrl和GPIO子系統(tǒng)GPIO子系統(tǒng)

    軟件控制設(shè)備上的GPIO信號(hào)。在Linux的GPIO子系統(tǒng)中,提供了一組API函數(shù)來管理和操作GPIO引腳。以下是一些常用的
    發(fā)表于 03-25 13:29

    基于GPIO子系統(tǒng)的LED驅(qū)動(dòng)程序分享

    Pinctrl 子系統(tǒng)把引腳的復(fù)用、配置抽出來,做成 Pinctrl 子系統(tǒng),給 GPIO、I2C 等模塊使用。讓我們?cè)谑褂媚硞€(gè)引腳功能時(shí)不用去一個(gè)個(gè)查芯片手冊(cè)。這會(huì)涉及 2 個(gè)對(duì)象:pin
    發(fā)表于 12-16 07:16

    怎樣去使用linux下的pintcrl和gpio子系統(tǒng)

    pinctrl和gpio內(nèi)部的原理是如何實(shí)現(xiàn)的?怎樣去使用linux下的pintcrl和gpio子系統(tǒng)呢?
    發(fā)表于 03-07 13:38

    Android開發(fā)手冊(cè)—API函數(shù)詳解

    Android開發(fā)手冊(cè)—API函數(shù)詳解
    發(fā)表于 10-17 09:01 ?13次下載
    Android開發(fā)手冊(cè)—<b class='flag-5'>API</b>函數(shù)<b class='flag-5'>詳解</b>

    基于Android開發(fā)手冊(cè)—API函數(shù)詳解

    基于Android開發(fā)手冊(cè)—API函數(shù)詳解
    發(fā)表于 10-24 09:06 ?18次下載
    基于Android開發(fā)手冊(cè)—<b class='flag-5'>API</b>函數(shù)<b class='flag-5'>詳解</b>

    gpio和pinctrl子系統(tǒng)的關(guān)系與區(qū)別

    gpio 和 pinctrl 子系統(tǒng)在內(nèi)核里的使用率非常高,和嵌入式產(chǎn)品的關(guān)聯(lián)非常大。從這兩個(gè)子系統(tǒng)開始學(xué)習(xí)驅(qū)動(dòng)開發(fā)是個(gè)不錯(cuò)的入門選擇。
    的頭像 發(fā)表于 03-15 11:40 ?5516次閱讀

    【i.MX6ULL】驅(qū)動(dòng)開發(fā)6——GPIO子系統(tǒng)點(diǎn)亮LED

    本篇介紹了使用**Pinctrl子系統(tǒng)GPIO子系統(tǒng)**的方式來點(diǎn)亮LED,與之前的寄存器版點(diǎn)亮LED與設(shè)備樹版點(diǎn)亮LED的最大區(qū)別在于不需要直接操作寄存器了,而是使用API函數(shù)來配
    的頭像 發(fā)表于 05-21 21:50 ?3492次閱讀
    【i.MX6ULL】驅(qū)動(dòng)開發(fā)6——<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>點(diǎn)亮LED

    RK3568pinctrl 和 gpio 子系統(tǒng)詳解

    如果 pinctrl 子系統(tǒng)將 PIN 復(fù)用為 GPIO,那么接下來就要配置 gpio 子系統(tǒng),且 gpio
    的頭像 發(fā)表于 12-20 10:22 ?3125次閱讀
    RK3568pinctrl 和 <b class='flag-5'>gpio</b> <b class='flag-5'>子系統(tǒng)</b><b class='flag-5'>詳解</b>

    瑞芯微RK3568-iomuxc和pinctrl子系統(tǒng)初窺

    pinctrl子系統(tǒng)作用:從設(shè)備樹中獲取PIN的描述信息來設(shè)置PIN的復(fù)用和電氣屬性,PIN可復(fù)用為I2C、SPI、GPIOgpio子系統(tǒng)作用:初始化
    發(fā)表于 12-20 10:10 ?54次下載

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)
    的頭像 發(fā)表于 05-23 13:47 ?202次閱讀
    RK3568驅(qū)動(dòng)指南|第十二篇 <b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>-第135章 <b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>與pinctrl<b class='flag-5'>子系統(tǒng)</b>相結(jié)合實(shí)驗(yàn)

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)

    迅為電子RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)
    的頭像 發(fā)表于 05-28 15:24 ?180次閱讀
    迅為RK3568驅(qū)動(dòng)指南<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b> <b class='flag-5'>GPIO</b>操作函數(shù)實(shí)驗(yàn)

    迅為RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    迅為RK3568開發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?245次閱讀
    迅為RK3568開發(fā)板驅(qū)動(dòng)指南<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b><b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b><b class='flag-5'>API</b>函數(shù)的引入