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

上传人:b****6 文档编号:15456239 上传时间:2023-07-04 格式:DOCX 页数:19 大小:19.42KB
下载 相关 举报
CSL学习笔记第八章GPIO模块.docx_第1页
第1页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第2页
第2页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第3页
第3页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第4页
第4页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第5页
第5页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第6页
第6页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第7页
第7页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第8页
第8页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第9页
第9页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第10页
第10页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第11页
第11页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第12页
第12页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第13页
第13页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第14页
第14页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第15页
第15页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第16页
第16页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第17页
第17页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第18页
第18页 / 共19页
CSL学习笔记第八章GPIO模块.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《CSL学习笔记第八章GPIO模块.docx》由会员分享,可在线阅读,更多相关《CSL学习笔记第八章GPIO模块.docx(19页珍藏版)》请在冰点文库上搜索。

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

CSL学习笔记第八章GPIO模块

第8章GPIO模块

8.1概述

通过GPIO模块的设计以允许对C55x器件中可用的非复用和地址GPIO引脚的核心控制。

以下三个表格列出了该模块有关的函数,寄存器和宏定义。

表8-1GPIO函数

——————————————————————————

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-2GPIO寄存器

IODIRIO7DIR,IO6DIR,IO5DIR,IO4DIR,IO3DIR,IO2DIR,IO1DIR,IO0DIR

IODATAIO7D,IO6D,IO5D,IO4D,IO3D,IO2D,IO1D,IO0D

C5509andC5509A支持以下.

AGPIOENIO13,IO12,IO11,IO10,IO9,IO8

AGPIODIRIO13DIR,IO12DIR,IO11DIR,IO10DIR,IO9DIR,IO8DIR

AGPIODATAIO13D,IO12D,IO11D,IO10D,IO9D,IO8D

C5502和C5501支持以下.

PGPIOEN0IO15EN,IO14EN,IO13EN,IO12EN,IO11EN,IO10EN,IO9EN,IO8EN,

IO7EN,IO6EN,IO5EN,IO4EN,IO3EN,IO2EN,IO1EN,IO0EN

PGPIODIR0IO15DIR,IO14DIR,IO13DIR,IO12DIR,IO11DIR,IO10DIR,IO9DIR,IO8DIR,

IO7DIR,IO6DIR,IO5DIR,IO4DIR,IO3DIR,IO2DIR,IO1DIR

PGPIODAT0IO15DAT,IO14DAT,IO13DAT,IO12DAT,IO11DAT,IO10DAT,IO9DAT,IO8DAT,

IO7DAT,IO6DAT,IO5DAT,IO4DAT,IO3DAT,IO2DAT,IO1DAT,IO0DAT

PGPIOEN1IO31EN,IO30EN,IO29EN,IO28EN,IO27EN,IO26EN,IO25EN,IO24EN,

IO23EN,IO22EN,IO21EN,IO20EN,IO19EN,IO18EN,IO17EN,IO16EN

PGPIODIR1IO31DIR,IO30DIR,IO29DIR,IO28DIR,IO27DIR,IO26DIR,IO25DIR,

IO24DIR,IO23DIR,IO22DIR,IO21DIR,IO20DIR,IO19DIR,IO18DIR,

IO17DIR,IO16DIR

PGPIODAT1IO31DAT,IO30DAT,IO29DAT,IO28DAT,IO27DAT,IO26DAT,IO25DAT,

IO24DAT,IO23DAT,IO22DAT,IO20DAT,IO19DAT,IO18DAT,IO17DAT,

IO16DAT

PGPIOEN2IO45EN,IO44EN,IO43EN,IO42EN,IO41EN,IO40EN,IO39EN,IO38EN,

IO37EN,IO36EN,IO35EN,IO34EN,IO33EN,IO32EN

PGPIODIR2IO45DIR,IO44DIR,IO43DIR,IO42DIR,IO41DIR,IO40DIR,IO39DIR,

IO38DIR,IO37DIR,IO36DIR,IO35DIR,IO34DIR,IO33DIR,IO32DIR

PGPIODAT2IO45DAT,IO44DAT,IO43DAT,IO42DAT,IO41DAT,IO40DAT,IO39DAT,

IO38DAT,IO37DAT,IO36DAT,IO35DAT,IO34DAT,IO33DAT,IO32DAT

————————————————————————————

8.2配置结构体

以下是建立GPIO的配置结构体

GPIO_Config(非并行GPIO引脚配置结构体)

成员列表:

Uint16ioen引脚使能寄存器IOEN

Uint16iodir引脚方向寄存器IODIR

说明:

建立非并行GPIO引脚的GPIO配置结构体.创建并初始化该结构体,接着向GPIO_config()函数船体其地址。

你可以通过使用文本值或者GPIO_RMK宏来创建结构体成员值。

GPIO_ConfigAll(并行和非并行GPIO引脚的配置结构体)

说明:

GPIO配置结构体是用于建立并行和非并行GPIO引脚,.创建并初始化该结构体,接着向GPIO_configAll()函数船体其地址。

你可以通过使用文本值或者GPIO_RMK宏来创建结构体成员值。

成员列表:

Uint16ioen非并行引脚使能寄存器IOEN

Uint16iodir非并行GPIO引脚方向寄存器IODIR

Uint16pgpioen并行GPIO引脚使能寄存器0PGPIOEN0

Uint16pgpiodir并行GPIO引脚方向寄存器0PGPIODIR0

Uint16pgpioen1并行GPIO引脚使能寄存器1PGPIOEN1

Uint16pgpiodir1并行GPIO引脚方向寄存器1PGPIODIR1

Uint16pgpioen2并行GPIO引脚使能寄存器2PGPIOEN2

Uint16pgpiodir2并行GPIO引脚方向寄存器2PGPIODIR2

8.3函数

以下的函数被C5502和C5501支持。

GPIO_close(释放先前被GPIO_open所占用的GPIO引脚)

函数VoidGPIO_(GPIO_HandlehGpio);

参数hGpioGPIO引脚句柄(参见GPIO_open())

返回值None

说明释放先前被GPIO_open所占用的GPIO引脚。

实例GPIO_close(hGpio);

GPIO_open(为单独使用占用GPIO)

函数GPIO_HandleGPIO_open(Uint32allocMask,Uint32flags);

参数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_HandlehGpio;

hGpio=GPIO_open(GPIO_PGPIO_PIN1,0);

GPIO_config(向非并行寄存器写入值)

函数voidGPIO_config(GPIO_HandlehGpio,GPIO_Config*cfg);

参数hGpioGPIO器件句柄

Cfg初始化配置寄存器的指针

返回值无

说明使用配置结构体向非并行GPIO控制寄存器写入值。

注意:

GPIO_Config结构体对于GPIOhePGPIO是通用的,但GPIO_config()函数只对使能的GPIO[0:

7].(TheGPIO_config()functionjustdiscardstheenablefieldincaseofGPIO[0:

7]pins.)

实例GPIO_HandlehGpio;

GPIO_ConfigmyConfig={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控制寄存器写入值)

函数voidGPIO_config(GPIO_ConfigAll&gCfg)

参数gCfg上电和掉电非复用GPIO引脚的配置结构体

返回值无

说明向并行和非并行GPIO控制寄存器写入值,用法参见GPIO_ConfigAll

实例GPIO_ConfigAllgCfg={

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和C5502

voidGPIO_pinDirection(GPIO_HandlehGpio,Uint32pinMask,Uint16direction);

对于C5509/A和C5510

voidGPIO_pinDirection(Uint32pinMask,Uint16direction);

参数hGpio之前调用GPIO_open()返回的GPIO句柄。

(此参数只对C5501/2)

pinMask受方向影响的GPIO引脚

对于5501/2,pinMask可以是以下的:

GPIOPinGroup0(非并行):

GPIO_GPIO_PIN0

GPIO_GPIO_PIN1

GPIO_GPIO_PIN2

GPIO_GPIO_PIN3

GPIO_GPIO_PIN4

GPIO_GPIO_PIN5

GPIO_GPIO_PIN6

GPIO_GPIO_PIN7

GPIOPinGroup1(并行GPIOPins0-15):

GPIO_PGPIO_PIN0

GPIO_PGPIO_PIN1

GPIO_PGPIO_PIN2

GPIO_PGPIO_PIN3

GPIO_PGPIO_PIN4

GPIO_PGPIO_PIN5

GPIO_PGPIO_PIN6

GPIO_PGPIO_PIN7

GPIO_PGPIO_PIN8

GPIO_PGPIO_PIN9

GPIO_PGPIO_PIN10

GPIO_PGPIO_PIN11

GPIO_PGPIO_PIN12

GPIO_PGPIO_PIN13

GPIO_PGPIO_PIN14

GPIO_PGPIO_PIN15

GPIOPinGroup2(并行GPIOPins16-31):

GPIO_PGPIO_PIN16

GPIO_PGPIO_PIN17

GPIO_PGPIO_PIN18

GPIO_PGPIO_PIN19

GPIO_PGPIO_PIN20

GPIO_PGPIO_PIN21

GPIO_PGPIO_PIN22

GPIO_PGPIO_PIN23

GPIO_PGPIO_PIN24

GPIO_PGPIO_PIN25

GPIO_PGPIO_PIN26

GPIO_PGPIO_PIN27

GPIO_PGPIO_PIN28

GPIO_PGPIO_PIN29

GPIO_PGPIO_PIN30

GPIO_PGPIO_PIN31

GPIOPinGroup3(并行GPIOPins32-45):

GPIO_PGPIO_PIN32

GPIO_PGPIO_PIN33

GPIO_PGPIO_PIN34

GPIO_PGPIO_PIN35

GPIO_PGPIO_PIN36

GPIO_PGPIO_PIN37

GPIO_PGPIO_PIN38

GPIO_PGPIO_PIN39

GPIO_PGPIO_PIN40

GPIO_PGPIO_PIN41

GPIO_PGPIO_PIN42

GPIO_PGPIO_PIN43

GPIO_PGPIO_PIN44

GPIO_PGPIO_PIN45

pinMask可以是单独的某个引脚或者是同组几个引脚的组合(例如:

GPIO_PGPIO_PIN23|GPIO_PGPIO_PIN30)。

directionpinMask选定的引脚的方向标记

GPIOPinGroup0(非并行GPIOPins):

GPIO_GPIO_PIN0_OUTPUT

GPIO_GPIO_PIN1_OUTPUT

GPIO_GPIO_PIN2_OUTPUT

GPIO_GPIO_PIN3_OUTPUT

GPIO_GPIO_PIN4_OUTPUT

GPIO_GPIO_PIN5_OUTPUT

GPIO_GPIO_PIN6_OUTPUT

GPIO_GPIO_PIN7_OUTPUT

GPIO_GPIO_PIN0_INPUT

GPIO_GPIO_PIN1_INPUT

GPIO_GPIO_PIN2_INPUT

GPIO_GPIO_PIN3_INPUT

GPIO_GPIO_PIN4_INPUT

GPIO_GPIO_PIN5_INPUT

GPIO_GPIO_PIN6_INPUT

GPIO_GPIO_PIN7_INPUT

GPIOPinGroup1(并行GPIOPins0-15):

GPIO_PGPIO_PIN0_OUTPUT

GPIO_PGPIO_PIN1_OUTPUT

GPIO_PGPIO_PIN2_OUTPUT

GPIO_PGPIO_PIN3_OUTPUT

GPIO_PGPIO_PIN4_OUTPUT

GPIO_PGPIO_PIN5_OUTPUT

GPIO_PGPIO_PIN6_OUTPUT

GPIO_PGPIO_PIN7_OUTPUT

GPIO_PGPIO_PIN8_OUTPUT

GPIO_PGPIO_PIN9_OUTPUT

GPIO_PGPIO_PIN10_OUTPUT

GPIO_PGPIO_PIN11_OUTPUT

GPIO_PGPIO_PIN12_OUTPUT

GPIO_PGPIO_PIN13_OUTPUT

GPIO_PGPIO_PIN14_OUTPUT

GPIO_PGPIO_PIN15_OUTPUT

GPIO_PGPIO_PIN0_INPUT

GPIO_PGPIO_PIN1_INPUT

GPIO_PGPIO_PIN2_INPUT

GPIO_PGPIO_PIN3_INPUT

GPIO_PGPIO_PIN4_INPUT

GPIO_PGPIO_PIN5_INPUT

GPIO_PGPIO_PIN6_INPUT

GPIO_PGPIO_PIN7_INPUT

GPIO_PGPIO_PIN8_INPUT

GPIO_PGPIO_PIN9_INPUT

GPIO_PGPIO_PIN10_INPUT

GPIO_PGPIO_PIN11_INPUT

GPIO_PGPIO_PIN12_INPUT

GPIO_PGPIO_PIN13_INPUT

GPIO_PGPIO_PIN14_INPUT

GPIO_PGPIO_PIN15_INPUT

GPIOPinGroup2(并行GPIOPins16-31):

GPIO_PGPIO_PIN16_OUTPUT

GPIO_PGPIO_PIN17_OUTPUT

GPIO_PGPIO_PIN18_OUTPUT

GPIO_PGPIO_PIN19_OUTPUT

GPIO_PGPIO_PIN20_OUTPUT

GPIO_PGPIO_PIN21_OUTPUT

GPIO_PGPIO_PIN22_OUTPUT

GPIO_PGPIO_PIN23_OUTPUT

GPIO_PGPIO_PIN24_OUTPUT

GPIO_PGPIO_PIN25_OUTPUT

GPIO_PGPIO_PIN26_OUTPUT

GPIO_PGPIO_PIN27_OUTPUT

GPIO_PGPIO_PIN28_OUTPUT

GPIO_PGPIO_PIN29_OUTPUT

GPIO_PGPIO_PIN30_OUTPUT

GPIO_PGPIO_PIN31_OUTPUT

GPIO_PGPIO_PIN16_INPUT

GPIO_PGPIO_PIN17_INPUT

GPIO_PGPIO_PIN18_INPUT

GPIO_PGPIO_PIN19_INPUT

GPIO_PGPIO_PIN20_INPUT

GPIO_PGPIO_PIN21_INPUT

GPIO_PGPIO_PIN22_INPUT

GPIO_PGPIO_PIN23_INPUT

GPIO_PGPIO_PIN24_INPUT

GPIO_PGPIO_PIN25_INPUT

GPIO_PGPIO_PIN26_INPUT

GPIO_PGPIO_PIN27_INPUT

GPIO_PGPIO_PIN28_INPUT

GPIO_PGPIO_PIN29_INPUT

GPIO_PGPIO_PIN30_INPUT

GPIO_PGPIO_PIN31_INPUT

GPIOPinGroup3(并行GPIOPins32-45):

GPIO_PGPIO_PIN32_OUTPUT

GPIO_PGPIO_PIN33_OUTPUT

GPIO_PGPIO_PIN34_OUTPUT

GPIO_PGPIO_PIN35_OUTPUT

GPIO_PGPIO_PIN36_OUTPUT

GPIO_PGPIO_PIN37_OUTPUT

GPIO_PGPIO_PIN38_OUTPUT

GPIO_PGPIO_PIN39_OUTPUT

GPIO_PGPIO_PIN40_OUTPUT

GPIO_PGPIO_PIN41_OUTPUT

GPIO_PGPIO_PIN42_OUTPUT

GPIO_PGPIO_PIN43_OUTPUT

GPIO_PGPIO_PIN44_OUTPUT

GPIO_PGPIO_PIN45_OUTPUT

GPIO_PGPIO_PIN32_INPUT

GPIO_PGPIO_PIN33_INPUT

GPIO_PGPIO_PIN34_INPUT

GPIO_PGPIO_PIN35_INPUT

GPIO_PGPIO_PIN36_INPUT

GPIO_PGPIO_PIN37_INPUT

GPIO_PGPIO_PIN38_INPUT

GPIO_PGPIO_PIN39_INPUT

GPIO_PGPIO_PIN40_INPUT

GPIO_PGPIO_PIN41_INPUT

GPIO_PGPIO_PIN42_INPUT

GPIO_PGPIO_PIN43_INPUT

GPIO_PGPIO_PIN44_INPUT

GPIO_PGPIO_PIN45_INPUT

方向可以使用任何上面定义过的符号常量来设置,同组的多个引脚可以用或操作进行设置比如:

GPIO_PGPIO_PIN45_INPUT|GPIO_PGPIO_PIN40_OUTPUT

返回值无

说明设置一个或多个GPIO的方向

实例/*设置pgpio为输入*/

GPIO_handlehGpio=GPIO_open{GPIO_PGPIO_PIN1|GPIO_PGPIO_PIN15};

GPIO_pinDirection(hGpio,GPIO_PGPIO_PIN1_INPUT);

GPIO_pinDisable.(禁止一个引脚作为GPIO引脚)

函数对于5501/2:

VoidGPIO_pinDisable(GPIO_HandlehGpio,Uint32pinId)

对于5509/a,5510:

VoidGPIO_pinDisable(Uint32pinId)

参数hGpio由GPIO_open返回的GPIO句柄(仅对5501/2CSL)

pinId禁止的引脚,参见GPIO_pinDirection()查看引脚号。

返回值无

说明禁止一个或多个GPIO引脚

实例/*禁止PGPIO1作为GPIO*/

GPIO_handlehGpio=GPIO_open(

GPIO_GPIO_PIN1|GPIO_GPIO_PIN15);

GPIO_pinDisable(hGpio,GPIO_GPIO_PIN1);

GPIO_pinEnable(使能一个引脚作为GPIO)

函数对于5501/2:

VoidGPIO_pinEnable(GPIO_HandlehGpio,Uint32pinId)

对于5509/A,5510:

VoidGPIO_pinEnable(Uint32pinId)

参数hGpio由GPIO_open返回的GPIO句柄(仅对5501/2CSL)

pinId使能的引脚,参见GPIO_pinDirection()查看引脚号。

返回值无

说明使能一个GPIO引脚

实例GPIO_pinEnable(hGpio,GPIO_GPIO_PIN1)

GPIO_pinRead(读GPIO引脚值)

函数对于5501/2:

intGPIO_pinRead(GPIO_HandlehGpio,Uint32pinId)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2