CSL学习笔记-第八章GPIO模块_第1页
CSL学习笔记-第八章GPIO模块_第2页
CSL学习笔记-第八章GPIO模块_第3页
CSL学习笔记-第八章GPIO模块_第4页
CSL学习笔记-第八章GPIO模块_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章GPIO模块8.1概述通过GPIO模块的设计以允许对 C55x器件中可用的非复用和地址 GPIO引脚的核心控 制。以下三个表格列出了该模块有关的函数,寄存器和宏定义。表8-1 GPIO函数GPIO_p in Directio n设置GPIO引脚为输入或者输出GPIO_p in Disable禁止一个引脚作为 GPIO引脚GPIO_p inEn able使能一个引脚作为 GPIO引脚GPIO_pi nRead读GPIO引脚的值GPIO_pi nWrite向GPIO引脚写值F面的函数是 C5501和C5502器件所支持。GPIO_colse释放一个或多个 GPIO引脚GPIO_co nfig

2、 配置GPIO引脚GPIO_ope n分配一个或多个 GPIO引脚到当前进程中GPIO_p in ReadAll读一个或多个引脚的值GPIO_pi nWriteAII 写一个或多个引脚GPIO_p in Reset复位一个或多个引脚表8-2 GPIO寄存器IODIR IO7DIR, IO6DIR, IO5DIR, IO4DIR, IO3DIR, IO2DIR, IO1DIR, IOODIRIODATA IO7D, IO6D, IO5D, IO4D, IO3D, IO2D, IO1D, IO0DC5509 and C5509A 支持以下.AGPIOENIO13, IO12, IO11, IO10

3、, 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, IO0ENPGPIODIR0IO15DIR, IO14DIR, IO13DIR, IO12DIR

4、, IO11DIR, IO10DIR, IO9DIR, IO8DIR,IO7DIR, IO6DIR, IO5DIR, IO4DIR, IO3DIR, IO2DIR, IO1DIRPGPIODAT0IO15DA T, IO14DAT, IO13DAT, IO12DA T, IO11DAT, IO10DAT, IO9DAT, IO8DAT,IO7DAT, IO6DAT, IO5DAT, IO4DAT, IO3DAT, IO2DAT, IO1DAT, IO0DATPGPIOEN1IO31EN, IO30EN, IO29EN, IO28EN, IO27EN, IO26EN, IO25EN, IO24E

5、N,IO23EN, IO22EN, IO21EN, IO20EN, IO19EN, IO18EN, IO17EN, IO16ENPGPIODIR1IO31DIR, IO30DIR, IO29DIR, IO28DIR, IO27DIR, IO26DIR, IO25DIR,IO24DIR, IO23DIR, IO22DIR, IO21DIR, IO20DIR, IO19DIR, IO18DIR,IO17DIR, IO16DIRPGPIODAT1IO31DA T, IO30DAT, IO29DAT, IO28DA T, IO27DAT, IO26DAT, IO25DA T,IO24DA T, IO2

6、3DAT, IO22DAT, IO20DA T, IO19DAT, IO18DAT, IO17DA T,IO16DATPGPIOEN2IO45EN, IO44EN, IO43EN, IO42EN, IO41EN, IO40EN, IO39EN, IO38EN,IO37EN, IO36EN, IO35EN, IO34EN, IO33EN, IO32ENPGPIODIR2IO45DIR, IO44DIR, IO43DIR, IO42DIR, IO41DIR, IO40DIR, IO39DIR,IO38DIR, IO37DIR, IO36DIR, IO35DIR, IO34DIR, IO33DIR,

7、 IO32DIRPGPIODAT2IO45DA T, IO44DAT, IO43DAT, IO42DA T, IO41DAT, IO40DAT, IO39DA T,IO38DA T, IO37DAT, IO36DAT, IO35DA T, IO34DAT, IO33DAT, IO32DA T8.2配置结构体以下是建立GPIO的配置结构体GPIO_Config(非并行GPIO引脚配置结构体)成员列表:Ui nt16 ioen引脚使能寄存器 IOENUi nt16 iodir引脚方向寄存器 IODIR说明 :建立非并行 GPIO引脚的GPIO配置结构体.创建并初始化该结构体,接着向GPIO_con

8、fig()函数船体其地址。你可以通过使用文本值或者GPIO_RMK宏来创建结构体成员值。GPIO_ConfigAII (并行和非并行 GPIO引脚的配置结构体)说明 : GPIO配置结构体是用于建立并行和非并行GPIO引脚,创建并初始化该结构体,接着向GPIO_configAII()函数船体其地址。你可以通过使用文本值或者GPIO_RMK宏来创建结构体成员值。成员列表:Uint16 ioen非并行引脚使能寄存器IOENUint16 iodir非并行GPIO引脚方向寄存器IODIRUint16 pgpioen并行GPIO引脚使能寄存器0PGPIOEN0Uint16 pgpiodir并行GPIO引

9、脚方向寄存器0PGPIODIR0Uint16 pgpioen1并行GPIO引脚使能寄存器1PGPIOEN1Uint16 pgpiodir1并行GPIO引脚方向寄存器1PGPIODIR1Uint16 pgpioen2并行GPIO引脚使能寄存器 2PGPIOEN2Uint16 pgpiodir2并行GPIO引脚方向寄存器2PGPIODIR28.3函数以下的函数被 C5502和C5501支持。GPIO_close(释放先前被 GPIO_open所占用的GPIO引脚)函数 Void GPIO_(GPIO_Ha ndle hGpio);参数 hGpioGPIO引脚句柄(参见 GPIO_open()返回值

10、 No ne说明释放先前被GPIO_open所占用的GPIO引脚。实例GPIO_close(hGpio);GPIO_ope n(为单独使用占用 GPIO)函数GPIO_Ha ndle GPIO_ope n(Ui nt32 allocMask,Ui nt32 flags);参数 allocMask 占用的GPIO引脚,可以参见 GPIO_p in Direction查看可用的引 脚。flags打开标志,当前未指定。返回值 GPIO_Handle器件句柄说明 在一个GPIO引脚被使用前,必须要被该应用程序占用,一旦被占用了,就不会在响应其他的请求,直到被GPIO_close()关闭。返回值是一个唯

11、一的器件句 柄,该句柄用于随后的API调用中的GPIO中。如果函数出错返回INV(-1)。对于 C5502 和 C5501,有四组 GPIO 引脚(见 GPIO_pinDirection()在调用了 GPIO_open()的同一时刻只能打开一组中的一个或几个引脚,在不 同组中多次调用引脚的allocMask会产生未知结果。例女口 : GPIO_ope n()第一个参数是同一组的(GPIO_GPIO_PIN4 | GPIO_GPIO_PIN2),但是(GPIO_GPIO_PIN4 | GPIO_PGPIO_PIN2)就会产生未 知结果。如果GPIO_open()在一个组中被调用了,在 GPIO_

12、close被调用前,它就不能 再次调用来打开同组的其他引脚。然而,GPIO_ope n()可以在此时被调用来打开其他组的引脚。例如:如果GPIO_open()第一次调用了 GPIO_GPIO_PIN4,他就不能再被调用 打开同组的的 GPIO_GPIO_PIN2,但是可以打开GPIO_PGPIO_PIN2.实例 GPIO_Ha ndle hGpio;hGpio = GPIO_ope n(GPIO_PGPIO_PIN1,O);GPIO_co nfig (向非并行寄存器写入值)函数 void GPIO_co nfig(GPIO_Ha ndle hGpio,GPIO_Co nfig *cfg);参数

13、 hGpio GPIO器件句柄Cfg初始化配置寄存器的指针返回值无说明使用配置结构体向非并行GPIO控制寄存器写入值。注意:GPIO_Config 结构体对于 GPIOhe PGPIO 是通用的, 但 GPIO_config() 函数只对使能的 GPIOO:7.( The GPIO_co nfig() fun ction just discards the en able field in case of GPIO 0:7 pi ns.)实例 GPIO_Ha ndle hGpio ;GPIO_C onfig myConfig = GPIO_PIN1_OUTPUT | GPIO_PIN3_OUT

14、PUT 对5501和5502的配置hGpio = GPIO_ope n (GPIO_GPIO_PIN1|GPIO_GPIO_PIN3,0)GPIO_co nfig(hGpio &mycon fig);GPIO_configAII(向并行和非并行 GPIO控制寄存器写入值)函数void GPIO_co nfig(GPIO_Co nfigAI l& gCfg)参数 gCfg上电和掉电非复用 GPIO引脚的配置结构体返回值无说明向并行和非并行 GPIO控制寄存器写入值,用法参见GPIO_ConfigAll实例GPIO_Co nfigAII gCfg = GPIO_PIN1_OUTPUT|GPIO_P

15、IN3_OUTPUT, /*IODIR*/0,/*PGPIOEN0*/0,/*PGPIODIR0*/0,/*PGPIOEN1*/0,/*PGPIODIR1*/0,/*PGPIOEN2*/0,/*PGPIODIR2*/;/*5501 和 5502 的 gpio 配置 */GPIO_co nfigAII(&gCfg);GPIO_pinDirection(设置GPIO为输入或者输出)函数 对于C5501和C5502void GPIO_pi nDirectio n(GPIO_Ha ndle hGpio,Ui nt32 pinM ask,Ui nt16 directio n); 对于 C5509/A 和

16、 C5510void GPIO_p in Directio n(Ui nt32 pi nM ask,Ui nt16 directio n);参数 hGpio之前调用 GPIO_open()返回的GPIO句柄。(此参数只对 C5501/2)pin Mask受方向影响的GPIO引脚对于5501/2, pinMask可以是以下的:GPIO PinGroup 0 (非并行):GPIO_GPIO_PIN0GPIO_GPIO_PIN1GPIO_GPIO_PIN2GPIO_GPIO_PIN3GPIO_GPIO_PIN4GPIO_GPIO_PIN5GPIO_GPIO_PIN6GPIO_GPIO_PIN7GPI

17、O Pin Group 1 (并行 GPIO Pins 0-15):GPIO_PGPIO_PIN0GPIO_PGPIO_PIN1GPIO_PGPIO_PIN2GPIO_PGPIO_PIN3GPIO_PGPIO_PIN4GPIO_PGPIO_PIN5GPIO_PGPIO_PIN6GPI0_PGPI0_PIN7GPI0_PGPI0_PIN8GPI0_PGPI0_PIN9GPI0_PGPI0_PIN10GPI0_PGPI0_PIN11GPI0_PGPI0_PIN12GPI0_PGPI0_PIN13GPI0_PGPI0_PIN14GPI0_PGPI0_PIN15GPI0 Pin Group 2 (并行

18、 GPI0 Pins 16-31):GPI0_PGPI0_PIN16GPIO_PGPIO_PIN17GPIO_PGPIO_PIN18GPIO_PGPIO_PIN19GPIO_PGPIO_PIN20GPIO_PGPIO_PIN21GPIO_PGPIO_PIN22GPIO_PGPIO_PIN23GPIO_PGPIO_PIN24GPIO_PGPIO_PIN25GPIO_PGPIO_PIN26GPIO_PGPIO_PIN27GPIO_PGPIO_PIN28GPIO_PGPIO_PIN29GPIO_PGPIO_PIN30GPIO_PGPIO_PIN31GPIO Pin Group 3 (并行 GPIO

19、Pins 32-45):GPIO_PGPIO_PIN32GPIO_PGPIO_PIN33GPIO_PGPIO_PIN34GPIO_PGPIO_PIN35GPIO_PGPIO_PIN36GPIO_PGPIO_PIN37GPIO_PGPIO_PIN38GPIO_PGPIO_PIN39GPIO_PGPIO_PIN40GPIO_PGPIO_PIN41GPIO_PGPIO_PIN42GPIO_PGPIO_PIN43GPIO_PGPIO_PIN44GPIO_PGPIO_PIN45pin Mask可以是单独的某个引脚或者是同组几个引脚的组合(例如:GPIO_PGPIO_PIN23| GPIO_PGPIO_P

20、IN30 )。direction pinMask选定的引脚的方向标记GPIO Pin Group 0(非并行 GPIO Pi ns):GPIO_GPIO_PINO_OUTPUTGPIO_GPIO_PIN1_OUTPUTGPIO_GPIO_PIN2_OUTPUTGPIO_GPIO_PIN3_OUTPUTGPIO_GPIO_PIN4_OUTPUTGPIO_GPIO_PIN5_OUTPUTGPIO_GPIO_PIN6_OUTPUTGPIO_GPIO_PIN7_OUTPUTGPIO_GPIO_PIN0_INPUTGPIO_GPIO_PIN1_INPUTGPIO_GPIO_PIN2_INPUTGPIO_

21、GPIO_PIN3_INPUTGPIO_GPIO_PIN4_INPUTGPIO_GPIO_PIN5_INPUTGPIO_GPIO_PIN6_INPUTGPIO_GPIO_PIN7_INPUTGPIO Pin Group 1 (并行 GPIO Pi ns 0-15):GPIO_PGPIO_PIN0_OUTPUTGPIO_PGPIO_PIN1_OUTPUTGPIO_PGPIO_PIN2_OUTPUTGPIO_PGPIO_PIN3_OUTPUTGPIO_PGPIO_PIN4_OUTPUTGPIO_PGPIO_PIN5_OUTPUTGPIO_PGPIO_PIN6_OUTPUTGPIO_PGPIO_PI

22、N7_OUTPUTGPIO_PGPIO_PIN8_OUTPUTGPIO_PGPIO_PIN9_OUTPUTGPIO_PGPIO_PIN10_OUTPUTGPIO_PGPIO_PIN11_OUTPUTGPIO_PGPIO_PIN12_OUTPUTGPIO_PGPIO_PIN13_OUTPUTGPIO_PGPIO_PIN14_OUTPUTGPIO_PGPIO_PIN15_OUTPUTGPIO_PGPIO_PIN0_INPUTGPIO_PGPIO_PIN1_INPUTGPIO_PGPIO_PIN2_INPUTGPIO_PGPIO_PIN3_INPUTGPIO_PGPIO_PIN4_INPUTGPIO

23、_PGPIO_PIN5_INPUTGPIO_PGPIO_PIN6_INPUTGPIO_PGPIO_PIN7_INPUTGPIO_PGPIO_PIN8_INPUTGPIO_PGPIO_PIN9_INPUTGPIO_PGPIO_PIN10_INPUTGPI0_PGPI0_PIN11_INPUTGPI0_PGPI0_PIN12_INPUTGPI0_PGPI0_PIN13_INPUTGPI0_PGPI0_PIN14_INPUTGPI0_PGPI0_PIN15_INPUTGPI0 Pin Group 2 (并行 GPI0 Pins 16-31):GPI0_PGPI0_PIN16_0UTPUTGPIO_P

24、GPIO_PIN17_OUTPUTGPIO_PGPIO_PIN18_OUTPUTGPIO_PGPIO_PIN19_OUTPUTGPIO_PGPIO_PIN20_OUTPUTGPIO_PGPIO_PIN21_OUTPUTGPIO_PGPIO_PIN22_OUTPUTGPIO_PGPIO_PIN23_OUTPUTGPIO_PGPIO_PIN24_OUTPUTGPIO_PGPIO_PIN25_OUTPUTGPIO_PGPIO_PIN26_OUTPUTGPIO_PGPIO_PIN27_OUTPUTGPIO_PGPIO_PIN28_OUTPUTGPIO_PGPIO_PIN29_OUTPUTGPIO_PG

25、PIO_PIN30_OUTPUTGPIO_PGPIO_PIN31_OUTPUTGPIO_PGPIO_PIN16_INPUTGPIO_PGPIO_PIN17_INPUTGPIO_PGPIO_PIN18_INPUTGPIO_PGPIO_PIN19_INPUTGPIO_PGPIO_PIN20_INPUTGPIO_PGPIO_PIN21_INPUTGPIO_PGPIO_PIN22_INPUTGPIO_PGPIO_PIN23_INPUTGPIO_PGPIO_PIN24_INPUTGPIO_PGPIO_PIN25_INPUTGPIO_PGPIO_PIN26_INPUTGPIO_PGPIO_PIN27_IN

26、PUTGPIO_PGPIO_PIN28_INPUTGPIO_PGPIO_PIN29_INPUTGPIO_PGPIO_PIN30_INPUTGPIO_PGPIO_PIN31_INPUTGPIO Pin Group 3 (并行 GPIO Pins 32-45):GPIO_PGPIO_PIN32_OUTPUTGPIO_PGPIO_PIN33_OUTPUTGPIO_PGPIO_PIN34_OUTPUTGPIO_PGPIO_PIN35_OUTPUTGPIO_PGPIO_PIN36_OUTPUTGPIO_PGPIO_PIN37_OUTPUTGPIO_PGPIO_PIN38_OUTPUTGPIO_PGPIO

27、_PIN39_OUTPUTGPIO_PGPIO_PIN40_OUTPUTGPIO_PGPIO_PIN41_OUTPUTGPIO_PGPIO_PIN42_OUTPUTGPIO_PGPIO_PIN43_OUTPUTGPIO_PGPIO_PIN44_OUTPUTGPIO_PGPIO_PIN45_OUTPUTGPIO_PGPIO_PIN32_INPUTGPIO_PGPIO_PIN33_INPUTGPIO_PGPIO_PIN34_INPUTGPIO_PGPIO_PIN35_INPUTGPIO_PGPIO_PIN36_INPUTGPIO_PGPIO_PIN37_INPUTGPIO_PGPIO_PIN38_

28、INPUTGPIO_PGPIO_PIN39_INPUTGPIO_PGPIO_PIN4O_INPUTGPIO_PGPIO_PIN41_INPUTGPIO_PGPIO_PIN42_INPUTGPIO_PGPIO_PIN43_INPUTGPIO_PGPIO_PIN44_INPUTGPIO_PGPIO_PIN45_INPUT方向可以使用任何上面定义过的符号常量来设置,同组的多个引脚可以用或操作进行设置比如:GPIO_PGPIO_PIN45_INPUT | GPIO_PGPIO_PIN4O_OUTPUT返回值无说明设置一个或多个GPIO的方向实例/*设置pgpio为输入*/GPIO_handle hGp

29、io = GPIO_openGPIO_PGPIO_PIN1|GPIO_PGPIO_PIN15; GPIO_pinDirection(hGpio,GPIO_PGPIO_PIN1N PUT);GPIO_pinDisable.(禁止一个引脚作为 GPIO引脚)函数 对于5501/2:Void GPIO_p in Disable(GPIO_Ha ndle hGpio,Ui nt32 pi nld)对于 5509/a,5510:Void GPIO_pi nDisable(Ui nt32 pi nld)参数 hGpio 由GPIO_open返回的GPIO句柄(仅对 5501/2 CSL) pinld禁止的

30、引脚,参见 GPIO_pinDirection()查看引脚号。返回值无说明禁止一个或多个 GPIO引脚实例/*禁止PGPIO1作为GPIO*/GPIO_ha ndle hGpio = GPIO_ope n (GPIO_GPIO_PIN1|GPIO_GPIO_PIN15);GPIO_p in Disable(hGpio,GPIO_GPIO_PIN1);GPIO_pi nEn able (使能一个引脚作为 GPIO)函数对于 5501/2:Void GPIO_pi nEn abIe(GPIO_Ha ndle hGpio,Ui nt32 pin Id)对于 5509/A,5510 :Void GPI

31、O_pi nEn abIe(Ui nt32 pi nld)参数hGpio由GPIO_open返回的GPIO句柄(仅对5501/2 CSL)返回值pi nld无使能的引脚,参见GPIO_p in Directio n()查看引脚号。说明使能一个GPIO引脚实例GPIO_p inEn abIe(hGpio,GPIO_GPIO_PIN1)GPIO_pinRead (读 GPIO 引脚值)函数 对于5501/2:int GPIO_p in Read(GPIO_Ha ndle hGpio,Ui nt32 pi nld)对于 5509/A,5510:int GPIO_pi nRead(Ui nt32 pi

32、 nld)参数 hGpio 由GPIO_open返回的GPIO句柄(仅对 5501/2 CSL )pi nld要读的引脚返回值读出的值(0或1)说明读输入引脚的值实例int val ;val = GPIO_p in Read(hGpio,GPIO_GPIO_PIN1);GPIO_pinReadAII(从一个或多个GPIO引脚上读回值) 函数 对于5501/5502:Int GPIO_pi nReadAII(GPIO_Ha ndle hGpio,Ui nt32 pi nM ask);对于 5509/A,5510 :Int GPIO_p in ReadAll(Ui nt32 pi nM ask)参

33、数 hGpio由GPIO_open返回的GPIO句柄(仅对 5501/2 CSL)pinMask要读的GPIO引脚号,参见 GPIO_pinDirection()查看引脚号 返回值 value读出的GPIO引脚值说明 读出pin Mask指定的GPIO引脚的值。(该函数返回代替引脚的值, Thefun ctio n returnsthe value in place of the pin s. It does not right-justify the value to retur n a raw result.) 实例 int val ;/*读IO0和IO7弓I脚的值*/val = GPIO

34、_pi nReadAII(hGpio,GPIO_GPIO_PIN0|GPIO_GPIO_PIN7);GPIO_pinWrite(向一个GPIO引脚写入值)函数 对于5501/2 :Void GPIO_pi nWrite(GPIO_Ha ndle hGpio ,Ui nt32 pi nM ask ,Ui nt16 val)对于 5509/A,5510 :Void GPIO_pi nWrite(Ui nt32 pi nM ask,Ui nt16 val)参数 hGpio 由GPIO_open返回的GPIO句柄(仅对 5501/2 CSL ) pinMask要写的GPIO引脚号,参见 GPIO_pi

35、nDirection()查看引脚号 val 向GPIO引脚写入的值(0或1)返回值无说明向GPIO输出引脚写入值。实例/*向pin0和pin5写入1*/GPIO_pi nWrite (hGpio,GPIO_GPIO_PIN0|GPIO_GPIO_PIN5,1)GPIO_pinWriteAII (向一个或者多个 GPIO引脚写入值)函数 对于 C5502 and C5501:void GPIO_pi nWriteAII(GPIO_Ha ndle hGpio,Ui nt32 pinM ask, Uin t16 val) 对于 C5509/C5509A/C5510:void GPIO_pi nWri

36、teAII(Ui nt32 pinM ask, Uin t16 val)参数 hGpio 由GPIO_open返回的GPIO句柄(仅对 5501/2 CSL) pinMask要写的GPIO引脚号,参见 GPIO_pinDirection()查看引脚号。 val 向GPIO引脚写入的值(0或1)返回值无说明向一个或多个输出GPIO引脚写入值,(Ths function assumes anin-place value mask for writi ng to the GPIO pi ns. It will not left-justify values.)实例 /*向pin0和pin5写入1*/GPIO_pi nWrite AII(hGpio,GPIO_GPIO_PIN0|GPIO_GPIO_PIN5,1)GPIO_pinReset (复位GPI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论