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目录下的函数。