好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

CSL学习笔记--第八章 GPIO模块.doc

11页
  • 卖家[上传人]:油条
  • 文档编号:12247285
  • 上传时间:2017-10-17
  • 文档格式:DOC
  • 文档大小:87.50KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第 8 章 GPIO 模块8.1 概述通过 GPIO 模块的设计以允许对 C55x 器件中可用的非复用和地址 GPIO 引脚的核心控制以下三个表格列出了该模块有关的函数,寄存器和宏定义表 8-1 GPIO 函数——————————————————————————GPIO_pinDirection设置 GPIO 引脚为输入或者输出GPIO_pinDisable禁止一个引脚作为 GPIO 引脚GPIO_pinEnable使能一个引脚作为 GPIO 引脚GPIO_pinRead读 GPIO 引脚的值GPIO_pinWrite向 GPIO 引脚写值下面的函数是 C5501 和 C5502 器件所支持GPIO_colse释放一个或多个 GPIO 引脚GPIO_config配置 GPIO 引脚GPIO_open分配一个或多个 GPIO 引脚到当前进程中GPIO_pinReadAll读一个或多个引脚的值GPIO_pinWriteAll写一个或多个引脚GPIO_pinReset复位一个或多个引脚————————————————————————————表 8-2 GPIO 寄存器IODIR IO7DIR, IO6DIR, IO5DIR, IO4DIR, IO3DIR, IO2DIR, IO1DIR, IO0DIRIODATA IO7D, IO6D, IO5D, IO4D, IO3D, IO2D, IO1D, IO0DC5509 and C5509A 支持以下.AGPIOEN IO13, IO12, IO11, IO10, IO9, IO8AGPIODIR IO13DIR, IO12DIR, IO11DIR, IO10DIR, IO9DIR, IO8DIRAGPIODATA IO13D, IO12D, IO11D, IO10D, IO9D, IO8DC5502 和 C5501 支持以下.PGPIOEN0 IO15EN, IO14EN, IO13EN, IO12EN, IO11EN, IO10EN, IO9EN, IO8EN,IO7EN, IO6EN, IO5EN, IO4EN, IO3EN, IO2EN, IO1EN, IO0ENPGPIODIR0 IO15DIR, IO14DIR, IO13DIR, IO12DIR, IO11DIR, IO10DIR, IO9DIR, IO8DIR,IO7DIR, IO6DIR, IO5DIR, IO4DIR, IO3DIR, IO2DIR, IO1DIRPGPIODAT0 IO15DAT, IO14DAT, IO13DAT, IO12DAT, IO11DAT, IO10DAT, IO9DAT, IO8DAT,IO7DAT, IO6DAT, IO5DAT, IO4DAT, IO3DAT, IO2DAT, IO1DAT, IO0DATPGPIOEN1 IO31EN, IO30EN, IO29EN, IO28EN, IO27EN, IO26EN, IO25EN, IO24EN,IO23EN, IO22EN, IO21EN, IO20EN, IO19EN, IO18EN, IO17EN, IO16ENPGPIODIR1 IO31DIR, IO30DIR, IO29DIR, IO28DIR, IO27DIR, IO26DIR, IO25DIR,IO24DIR, IO23DIR, IO22DIR, IO21DIR, IO20DIR, IO19DIR, IO18DIR,IO17DIR, IO16DIRPGPIODAT1 IO31DAT, IO30DAT, IO29DAT, IO28DAT, IO27DAT, IO26DAT, IO25DAT,IO24DAT, IO23DAT, IO22DAT, IO20DAT, IO19DAT, IO18DAT, IO17DAT,IO16DATPGPIOEN2 IO45EN, IO44EN, IO43EN, IO42EN, IO41EN, IO40EN, IO39EN, IO38EN,IO37EN, IO36EN, IO35EN, IO34EN, IO33EN, IO32ENPGPIODIR2 IO45DIR, IO44DIR, IO43DIR, IO42DIR, IO41DIR, IO40DIR, IO39DIR,IO38DIR, IO37DIR, IO36DIR, IO35DIR, IO34DIR, IO33DIR, IO32DIRPGPIODAT2 IO45DAT, IO44DAT, IO43DAT, IO42DAT, IO41DAT, IO40DAT, IO39DAT,IO38DAT, IO37DAT, IO36DAT, IO35DAT, IO34DAT, IO33DAT, IO32DAT————————————————————————————8.2 配置结构体以下是建立 GPIO 的配置结构体GPIO_Config(非并行 GPIO 引脚配置结构体)成员列表: Uint16 ioen 引脚使能寄存器 IOENUint16 iodir 引脚方向寄存器 IODIR说明 : 建立非并行 GPIO 引脚的 GPIO 配置结构体.创建并初始化该结构体,接着向GPIO_config()函数船体其地址。

      你可以通过使用文本值或者 GPIO_RMK 宏来创建结构体成员值GPIO_ConfigAll(并行和非并行 GPIO 引脚的配置结构体)说明 : GPIO 配置结构体是用于建立并行和非并行 GPIO 引脚,.创建并初始化该结构体,接着向 GPIO_configAll()函数船体其地址你可以通过使用文本值或者 GPIO_RMK宏来创建结构体成员值成员列表:Uint16 ioen 非并行引脚使能寄存器 IOENUint16 iodir 非并行 GPIO 引脚方向寄存器 IODIRUint16 pgpioen 并行 GPIO 引脚使能寄存器 0 PGPIOEN0Uint16 pgpiodir 并行 GPIO 引脚方向寄存器 0 PGPIODIR0Uint16 pgpioen1 并行 GPIO 引脚使能寄存器 1 PGPIOEN1Uint16 pgpiodir1 并行 GPIO 引脚方向寄存器 1 PGPIODIR1Uint16 pgpioen2 并行 GPIO 引脚使能寄存器 2 PGPIOEN2Uint16 pgpiodir2 并行 GPIO 引脚方向寄存器 2 PGPIODIR28.3 函数以下的函数被 C5502 和 C5501 支持。

      GPIO_close (释放先前被 GPIO_open 所占用的 GPIO 引脚)函数 Void GPIO_(GPIO_Handle hGpio);参数 hGpio GPIO 引脚句柄(参见 GPIO_open())返回值 None说明 释放先前被 GPIO_open 所占用的 GPIO 引脚实例 GPIO_close(hGpio);GPIO_open (为单独使用占用 GPIO)函数 GPIO_Handle GPIO_open(Uint32 allocMask,Uint32 flags);参数 allocMask 占用的 GPIO 引脚,可以参见 GPIO_pinDirection 查看可用的引脚flags 打开标志,当前未指定返回值 GPIO_Handle 器件句柄说明 在一个 GPIO 引脚被使用前,必须要被该应用程序占用,一旦被占用了,就不 会在响应其他的请求,直到被 GPIO_close()关闭返回值是一个唯一的器件句 柄,该句柄用于随后的 API 调用中的 GPIO 中如果函数出错返回 INV(-1)对于 C5502 和 C5501,有四组 GPIO 引脚(见 GPIO_pinDirection())在调用了 GPIO_open() 的同一时刻只能打开一组中的一个或几个引脚,在不同组中多次调用引脚的 allocMask 会产生未知结果。

      例如:GPIO_open()第一个参数是同一组的(GPIO_GPIO_PIN4 | GPIO_GPIO_PIN2) ,但是(GPIO_GPIO_PIN4 | GPIO_PGPIO_PIN2)就会产生未 知结果如果 GPIO_open()在一个组中被调用了,在 GPIO_close 被调用前,它就不能再次调用来打开同组的其他引脚然而,GPIO_open()可以在此时被调用来打开其他组的引脚例如:如果 GPIO_open()第一次调用了 GPIO_GPIO_PIN4,他就不能再被调用 打开同组的的 GPIO_GPIO_PIN2,但是可以打开 GPIO_PGPIO_PIN2.实例 GPIO_Handle hGpio;hGpio = GPIO_open(GPIO_PGPIO_PIN1,0);GPIO_config (向非并行寄存器写入值 )函数 void GPIO_config(GPIO_Handle hGpio,GPIO_Config *cfg);参数 hGpio GPIO 器件句柄Cfg 初始化配置寄存器的指针返回值 无说明 使用配置结构体向非并行 GPIO 控制寄存器写入值注意:GPIO_Config 结构体对于 GPIOhe PGPIO 是通用的, 但 GPIO_config()函数只对使能的 GPIO[0:7].( The GPIO_config() function just discards the enable field in case of GPIO [0:7] pins.)实例 GPIO_Handle hGpio ;GPIO_Config myConfig = {GPIO_PIN1_OUTPUT | GPIO_PIN3_OUTPUT }对 5501 和 5502 的配置hGpio = GPIO_open (GPIO_GPIO_PIN1|GPIO_GPIO_PIN3,0)GPIO_config(hGpio &myconfig); GPIO_configAll (向并行和非并行 GPIO 控制寄存器写入值)函数 void GPIO_config(GPIO_ConfigAll&gCfg)参数 gCfg 上电和掉电非复用 GPIO 引脚的配置结构体返回值 无说明 向并行和非并行 GPIO 控制寄存器写入值,用法参见 GPIO_ConfigAll实例 GPIO_ConfigAll gCfg = {GPIO_PIN1_OUTPUT|GPIO_PIN3_OUTPUT, /*IODIR*/0,/*PGPIOEN0*/0,/*PGPIODIR0*/0,/*PGPIOEN1*/0,/*PGPIODIR1*/0,/*PGPIOEN2*/0,/*PGPIODIR2*/};/*5501 和 5502 的 gpio 配置*/GPIO_configAll(&gCfg);GPIO_pinDirection(设置 GPIO 为输入或者输出)函数 对于 C5501 和 C5502void GPIO_pinDirection(GPIO_Handle hGpio,Uint32 pinMask,Uint16 direction);对于 C5509/A 和 C5510void GPIO_pinDirection(Uint32 pinMask,Uint16 direction);参数 hGpio 之前调用 GPIO_open()返回的 GPIO 句柄。

      (此参数只对 C5501/2)pinMask 受方向影响的 GPIO 引脚对于 5501/2,pinMask 可以是以下的:GPIO PinGroup 0 (非并行):GPIO_GPIO_PIN0GPIO_GPIO_PIN1GPIO_GPIO_PIN2GPIO_GPIO_PIN3GPIO_GPIO_PIN4GPIO_G。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.