联发科Linkit 7688 (二)GPIO基本操作与C语言编程

5 篇文章 2 订阅

Linkit 系列博文:

联发科Linkit 7688 (一) 上手及在Mac下搭建OpenWrt交叉编译环境,C语言编译Hello,World

联发科Linkit 7688 (二)GPIO基本操作与C语言编程

联发科Linkit 7688 DUO(三): 通过 Arduino 控制外设和传感器

Linkit 7688 DUO(四): 接上各种Arduino传感器和模块——基础篇

Linkit 7688 DUO(五) 接上各种Arduino传感器和模块—扩展篇

Linkit 7688 DUO(六) 加入MQTT物联网协议




GPIO ( General Purpose Input Output ) 全名为通用输入输出,是CPU的一种管脚,即可以做输入、也可以做输出, 常用于将开关、按键、LED、传感器等接到CPU。

Linkit 7688 有40多个GPIO管脚, 分别编号为:gpio1, gpio2, ... gpioxx


一、GPIO 基础

   GPIO 管脚支持最高 4 mA 电流, 激活时电压为3.3V.   管脚有两个状态:HIGH 或 LOW,  HIGH就是高电压(3.3V), LOW是低电压(0 V)

   根据连接电路的不同,连接GPIO管脚的设备有两种激活方式: 

  • Active high 当 GPIO  为 HIGH时,设备被激活
  • Active low:  当 GPIO为  LOW时,设备激活
     下图显示 LED 和 按钮 分别以 Active High 和 Active Low 两种方式 接入GPIO的电路图
  

二、GPIO的软件控制
  
     在Linux中, GPIO 表达为一个设备文件, 对GPIO的操作采用文件读写方式即可完成。
     在 目录  /sys/class/gpio/ 下 存放着 GPIO 的设备文件。
   
     查看一个7688的gpio这个目录   

          ls /sys/class/gpio

     返回结果:

         export      gpiochip0   gpiochip127 gpiochip32  gpiochip64   unexport

     其中: export 和 unexport 是两个文件, 其它是目录。

     要操作某一个GPIO,  首先要将GPIO 管脚编号首先写入 export 文件中

     输入命令行: echo  44  > /sys/class/gpio/export
     然后 查看gpio目录    ls /sys/class/gpio
     结果是:     

        export       gpiochip0   gpiochip32   unexport

        gpio44      gpiochip127 gpiochip64

     可以看到,该目录下多了一个名为 gpio44的目录。 进入这个目录即可对GPIO44口进行操作。

      查看一下gpio44目录:   ls  /sys/class/gpio/gpio44

      结果有几个文件

          active_low device      direction   edge       subsystem   uevent      value

       其中:   

            direction 文件是GPIO的输入输出方向,写入文本"out" 到该文件,则 GPIO口被置为输出状态。写入"in" 到该文件,则 GPIO口被置为输入状态。 

            value 文件是GPIO的当前状态值,为1或0 (即 HIGH 或 LOW).   写入文本"1" 到该文件,则 GPIO置为HIGH(高电压), 写入文本"0" 到该文件,则 GPIO置为LOW(低电压)


       以命令行操作一下, 将gpio44的direction设成 "out", 值设为 "0"

             echo  out > /sys/class/gpio/gpio44/direction

             echo  0  > /sys/class/gpio/gpio44/value

       则此时, 开发板上的WIFI灯亮起。  (开发板的WIFI灯连接了 gpio44, 由于WIFI灯的接入方式是Active Low,故写入 “0“ 灯亮)

       写入 “1“ , 则开发板上的WIFI灯灭了,命令如下:

              echo  1  > /sys/class/gpio/gpio44/value   

       操作完成后,可以将GPIO 管脚编号写入 unexport 文件中

            echo  44  > /sys/class/gpio/unexport

       则目录 /sys/class/gpio/gpio44 将消失, 不能操作GPIO 44脚了


        上述过程是适用于所有 Linux 版本的通用处理方式,不仅是OpenWrt独有的。

       

三、C语言编程操作GPIO

       明白上述过程后,也就明白了:C语言编程操作GPIO其实就是读写文件。

       比如: 将 gpio44 置为HIGH

              int fp =open("/sys/class/gpio/gpio44/value", O_WRONLY);

                write(fp, "1",  2 );

                close(fp);

       一般来说,对设备文件的操作使用  open(), close(),   而不使用 fopen(), fclose().   前者是操作系统函数、无缓冲的,后者是标准C函数、有缓冲的。

  

  为方便使用,我写了一个gpio模块,包含两个文件   gpio.c,  gpio.h,  有几个GPIO的常用操作函数。 比如:


/**

 * Export specified GPIO pin

 * @param pin_number specified the pin

 * @return 1 if success.

 *  return negative integer error code if fail.

 */

int gpio_export(int pin_number) ;


/**

 * Write specified GPIO pin

 * @param pin_number specified the pin

 * @param value

 * @return 1 if success.

 *  return negative integer error code if fail.

 */

int  gpio_write(int pin_number,int value);


/**

 * set direction of specified GPIO pin

 * @param pin_number specified the pin

 * @param direction could be GPIO_IN or GPIO_OUT, GPIO_OUT_HIGH, GPIO_OUT_LOW

 * @return 1 if success.

 *  return negative integer error code if fail.

 */

int  gpio_set_direction(int pin_number,int direction);


...


具体看 gpio.h 头文件 和 example吧


例程:


#include "gpio.h"


int main() {

    gpio_export(44);    //export gpio44

   gpio_set_direction(44, GPIO_OUTPUT);  //设 gpio44 为 输出状态

   gpio_write(44, GPIO_LOW);    //设 gpio44 值为 LOW,   在7688板上则WIFI灯亮起

}


gpio模块和例程在我的下载中分享 :GPIO库       

对于CPU直接引出的 GPIO管脚 , 上述操作就可以了。


但是,在Linkit 7688 DUO开发板, 板上引出的GPIO引脚都是由一片 ATmega32U4 芯片提供的,这片芯片提供Arduino的开发接口。

因此,要操作 Linkit 7688 DUO开发板的GPIO口,需要安装 Arduino IDE, 并用Arduino编程ATmega32U4 控制GPIO口,

Linkit 7688主芯片通过串口控制ATmega32U4 。(具体见后续博文)




     



  



    

     

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 联发科(Mediatek)的刷机包是指针对其处理器制造的移动设备所提供的固件更新程序。通过刷机包,用户可以将其设备上的旧版本固件升级为新版本,以获取操作系统的新特性、修复已知的漏洞和问题,并提高设备的性能和稳定性。 联发科刷机包的使用方法通常包括以下几个步骤:首先,用户需要下载相应的刷机包文件并将其保存到设备的存储空间中。然后,在设备进入特殊的刷机模式下,用户可以通过电脑上的刷机工具将刷机包安装到设备中。刷机过程中需要注意备份重要数据,因为刷机操作可能会导致设备数据丢失。最后,等待刷机程序完成,并重新启动设备,即可完成刷机升级。 刷机包的优势在于用户可以获得官方提供的系统更新,保持设备的最新状态。此外,刷机包还提供了一些额外的功能和自定义选项,例如通过刷入第三方ROM(刷机固件)来获取不同的用户界面和功能特性,以满足用户的个性化需求。 然而,刷机操作也存在一定的风险。错误的刷机操作可能会导致设备无法启动,甚至变砖(即设备变为无法使用的状态),同时刷机可能会影响设备的一些功能和保修条款。因此,在刷机之前,用户应该了解刷机操作的风险,确保了解正确的刷机方法,并谨慎操作。 总之,联发科的刷机包为用户提供了升级设备固件的方法,以改善设备的性能和功能。然而,刷机操作需要谨慎,并需理解风险与收益之间的平衡,以确保刷机过程顺利且安全。 ### 回答2: 联发科(MediaTek)的medntek刷机包是用于刷写联发科芯片的软件包。刷机是指根据用户的需求或喜好,将手机或其他设备的操作系统替换为第三方或定制的操作系统或固件。刷机可以提供更多的定制化选项和功能,但也需要谨慎操作,以免损坏设备或失去保修。 medntek刷机包是联发科专为其芯片定制的刷机软件包。它包含了需要刷写的操作系统或固件以及与联发科芯片兼容的驱动程序和工具。使用medntek刷机包可以改变设备的系统、界面或功能,以实现用户个性化需求。刷机包通常由开发者或社区提供,用户可以根据自己的需求选择合适的刷机包进行刷机。 刷机需谨慎,操作前应备份设备重要数据,了解刷机包的来源和兼容性,遵循刷机教程的操作步骤。刷机可能会导致设备变砖(即无法开机或正常使用),还可能失去设备的保修或支持。刷机风险自负,用户需要对自身行为承担责任。 总结来说,联发科medntek刷机包是联发科芯片的刷机软件包,可以改变设备的操作系统和功能,但使用需谨慎,遵循操作步骤和了解风险。 ### 回答3: 联发科Mediatek是一家知名的半导体公司,而Medntek刷机包则是指联发科处理器所适用的刷机软件包。刷机是指通过更换或更新手机的操作系统来改变手机的功能或性能,而刷机包则是相应的软件文件。 联发科Medntek刷机包是为联发科处理器设计的刷机软件包。它包含了必要的固件、驱动程序和系统文件,可以用于更换或升级手机操作系统。用户可以通过刷机将手机从原厂预装的操作系统更换为其他软件开发者提供的定制系统,以获得更多功能或优化性能。刷机包提供了一种灵活的方式来改善手机的使用体验。 刷机虽然可以带来一些好处,但也存在一定的风险。错误的刷机操作可能导致手机无法正常开机或无法使用。此外,刷机可能会取消手机的保修,因为刷机操作被认为是一种未经授权的修改。 总之,联发科Medntek刷机包是一种用于更换或升级联发科处理器手机操作系统的软件包。虽然刷机带来了改进手机的潜力,但需要谨慎操作以避免潜在的风险。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值