首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux应用开发【第九章】GPIO编程应用开发

文章目录 9 GPIO编程应用开发 9.1 GPIO编程基础介绍 9.2 GPIO编程软件接口 9.2.1 控制接口 9.2.2 GPIO信号 9.2.3 GPIO控制器 9.3 IMX6ULL开发GPIO...编号的确定 9.3.1 LED的GPIO编号计算 9.3.2 按键的GPIO编号计算 9.3.3 特殊情况下的GPIO编号计算 9.4 实际编程操作 9.4.1 导出GPIO口 9.4.2 设置GPIO...方向 9.4.3 GPIO输出实验-LED输出控制 9.4.4 GPIO输入试验-按键值读取 9.4.5 LED和按键控制实验 9 GPIO编程应用开发 9.1 GPIO编程基础介绍 ​ GPIO(General-Purpose...-1 ” label”属性,用于判断控制器,并不总是唯一的 9.3 IMX6ULL开发GPIO编号的确定 ​ 每个芯片可以有N组GPIO,每组GPIO最多有32个GPIO,即最多有N*32个GPIO...从上图可以看到,在IMX6ULL中,共有5组GPIO,起始GPIO组为GPIO1。因此在实际GPIO编号计算中,第一组GPIO1对应的编号为031。

1.2K30

Linux学习系列六:操作GPIO

1 引言 学习单片机的第一个例子通常都是点亮LED灯,对于Linux应用,我们也从LED入手,我就记得自己刚开始学的时候查了好多资料才勉强能控制一个灯亮,当时就感受到了Linux和单片机裸机有很大的差异...2 环境介绍 2.1.硬件 网上的一个第三方做的NUC972开发板: ?...2.2.软件 1)需要在上一篇《Linux学习系列五:Nand Flash根文件系统制作》的基础上改动下Linux内核配置,生成新的970uimage并烧写到板子里。...2)先使用我们之前的交叉工具链去编译上述代码 arm-none-linux-gnueabi-gcc gpio_demo.c -o gpio_demo 将生成的gpio_demo放到板子里去运行,提示如下错误...3)使用和板子里自带文件系统匹配的交叉工具链来重新编译 arm-linux-gcc gpio_demo.c -o gpio_demo 这时它会报一个错误: ?

3.1K20

Linuxgpio接口的使用方法示例

前言 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpiogpio使用0~MAX_INT之间的整数标识,...不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用的 使用gpio...使用gpio接口需要包含#include ,在驱动中使用延时函数mdelay,需要包含#include 文件,Documentation/gpio.txt.../* GPIO OUTPUT */ void gpio_set_value(unsigned gpio, int value); int gpio_cansleep(unsigned gpio);...); } else { set_irq_type(gpio_to_irq(sw->gpio), IRQ_TYPE_EDGE_RISING); } } 参考文章 Linux中的gpio口使用方法

2.5K53

GPIO操作原理(Linux一切皆文件)

Linux 系统定义了一切皆文件的原则,甚至于硬件:磁盘,软盘,等……,这样的好处是,在不同的平台和硬件上都能形成统一的调用方式。...接触过 Linux 的,应该都了解 echo "0" > test.txt 是将一个字符串 0 输入到当前目录的 test.txt 文件中,那么下面所有的操作,均基于这个操作形式。...GPIO端口 自 Linux 2.6.21 起,GPIO 作为一个基础组件包含到Linux 内,我们可以根据 GPIO 规范直接使用。...控制 GPIO 的目录位于 /sys/class/gpio。 /sys/class/gpio/export 文件用于通知系统需要导出控制的 GPIO 引脚编号。...SHELL 控制 上面的讲解中,即时通过 shell 的方式控制 GPIO,这里将所有的命令集合下: # 进入GPIO目录 cd /sys/class/gpio # 使用ls查看gpio目录中的内容 ls

3.4K11

GPIO—按键中断

13.3软件设计 13.3.1软件设计思路 实验目的:本实验通过使用外部中断功能去判断按键的状态,通过中断的形式能够更加灵敏的读取到GPIO的电平,让用户更加直观的感受到STM32F103的中断,并学会如何使用和开发其中断功能...(KEY_UP_GPIO_PORT, KEY_UP_GPIO_PIN) #define KEY_DOWN HAL_GPIO_ReadPin(KEY_DOWN_GPIO_PORT, KEY_DOWN_GPIO_PIN...0}; // 使能按键的 GPIO 对应的时钟 KEY_UP_GPIO_CLK_EN(); KEY_DOWN_GPIO_CLK_EN(); KEY_LEFT_GPIO_CLK_EN(); KEY_RIGHT_GPIO_CLK_EN...= KEY_UP_GPIO_PIN; // 选择按键的引脚 HAL_GPIO_Init(KEY_UP_GPIO_PORT, &GPIO_InitStruct); // 初始化'Down'键引脚配置 GPIO_InitStruct.Pin...GPIO_InitStruct.Pin = KEY_LEFT_GPIO_PIN; // 选择按键的引脚 HAL_GPIO_Init(KEY_LEFT_GPIO_PORT, &GPIO_InitStruct

2.7K30

GPIO模拟串口

这时我们可以考虑用GPIO去模拟,如何具体实现呢? 首选我们需要了解串口的传输协议, UART使用异步模式工作,不需要时钟信号,其一般格式为:起始位+数据位+校验位+停止位。...0x23,二进制表示为00100011,传输顺序为1->1->0->0->0->1->0->0 掌握清楚这个时序那么也就好用GPIO模拟了,除了需要两个GPIO,还需要两个定时器(分别用于接收和发送时序控制...1) 对于接收,当RX引脚检测到下降沿时,进入GPIO中断,然后开启一个定时器,第一次定时器周期设置为1/波特率的一半(目的是为了在中心处判断是否为低电平,以表示是否为起始位),再之后就可以设置定时器周期为...以下是对程序的简单说明: 1)gpio_uart_demo_init() 里可以配置UART的相关参数,如波特率,奇偶校验,数据位长度 2)void gpio_uart_read(uint8_t *bufptr...4)移植到其他不同平台非常容易,只需要修改下GPIO和定时器配置即可。

2.7K10
领券