am335x,GPIO学习

am335x,GPIO学习
am335x,GPIO学习

[A8] am335x_starterware

—GPIO demo学习本例程实现功能比较简单,实现LED灯的闪烁。

1、主流程

图1-1 GPIO程序主流程

像常见LED闪烁程序一样,都是先配置,然后采取:置高-延时-拉低-延时-置高-延时……的方式,实现闪烁。

2、各子函数说明

2.1 GPIO1ModuleClkConfig()

配置GPIO1寄存器CM_PER_GPIO1_CLKCTRL(或上0x00000002),使能该GPIO1模块。等待配置完毕。P1049。

配置GPIO1寄存器CM_PER_GPIO1_CLKCTRL(或上0x00040000),使能GPIO1模块时钟。等待配置完毕。P1049。

检测GPIO1是否处于闲置状态CM_PER_GPIO1_CLKCTRL[17-16],若处于非fully functional状态,则等待。P1049。

检测L4的CM_PER_L4LS_CLKSTCTRL的[19]位,查看GPIO1_GDBCLK时钟是否激活。若未激活(Inact)则等待。P1020。

2.2 GPIO1Pin23PinMuxSetup()

GPIO1Pin23PinMuxSetup()

配置GPMC_A7(GPIO1_23)引脚,配置为高速、下拉并使能。Register=0x00000007。p1278。功能服用配置位为该寄存器[2:0],配置为111b,还未搞清楚。

2.3 GPIOModuleEnable()

GPIOModuleEnable(GPIO_INSTANCE_ADDRESS)

配置GPIO1时钟使能,GPIO_CTRL。GPIO_CTRL[0]=0,使能GPIO1模块。P4524。

2.4 GPIOModuleReset()

GPIOModuleReset(GPIO_INSTANCE_ADDRESS)

复位GPIO1各端口。GPIO_SYSCONFIG。GPIO_SYSCONFIG[1]=1,软件写1复位,复位GPIO1各端口。P4519。

2.5 void GPIODirModeSet()

void GPIODirModeSet(unsigned int baseAdd,

unsigned int pinNumber,

unsigned int pinDirection)

配置相应GPIO,相应引脚的输入输出方向位:

baseAdd:GPIOn首地址;

pinNumber:GPIO待配置端口号;

pinValue:GPIO相应端口的输入输出方向状态;

调用:GPIODirModeSet( GPIO_INSTANCE_ADDRESS,

GPIO_INSTANCE_PIN_NUMBER,

GPIO_DIR_OUTPUT);

配置GPIO1_23输入输出方向位。GPIO_OE。GPIO_OE[23]=0,将GPIO1_23置为输出。P4524。

2.6 void GPIOPinWrite()

void GPIOPinWrite(unsigned int baseAdd,

unsigned int pinNumber,

unsigned int pinValue)

配置GPIO相应管脚的高低电平状态。

baseAdd:GPIOn首地址;

pinNumber:GPIO待配置端口号;

pinValue:GPIO相应端口的高低电平状态;

调用:GPIOPinWrite(GPIO_INSTANCE_ADDRESS,

GPIO_INSTANCE_PIN_NUMBER,

GPIO_PIN_HIGH);

置位:向GPIO_SETDATAOUT对应位写1;P4529;

清零:向GPIO_CLEARDA TAOUT对应位写1;P4529;

2.7 注意

在am335x_starterware程序包中,上述同名函数原型可能不止一个。阅读时注意选beaglbebone目录下的函数。

相关主题
相关文档
最新文档