文档库 最新最全的文档下载
当前位置:文档库 › AM335X GPIO详解

AM335X GPIO详解

1、配置GPIO1的时钟
CM_PER Registers
CM_PER_GPIO1_CLKCTRL
该寄存器管理GPIO1时钟。
OPTFCLKEN_GPIO_1_GDBCLK 可选功能时钟控制
0X0 = FCLK_DIS :可选功能的时钟被禁止
0x1 = FCLK_EN :可选功能时钟使能

IDLEST 模块为空闲状态
0X0 =函数功能:模块功能齐全,包括OCP
0x1 =反:模块进行转换:唤醒或休眠,或睡眠流产
0X2 =空闲:模块处于空闲模式(仅OCP部分) 。它是功能,如果使用独立的时钟功能
0x3的=禁止:禁止模块,不能访问


CM_PER_L4LS_CLKSTCTRL
该寄存器使能域功率状态转换。它控制着SW监督时钟域状态 ON- PER和ON- INPER状态之间的转换。
它也认为每个时钟输入1个状态位域。
CLKACTIVITY_GPIO_1_GDBCLK 该字段表示在该GPIO1_GDBCLK时钟的状态域。
0X0 = INACT :对应的时钟门控
0x1 =ACT:通讯时钟有效

2、配置GPIO端口功能
CONTROL_MODULE Registers
conf_gpmc_a0-a11 设置内部上拉和管脚传输速率:快或慢

3、重启GPIO模块
GPIO_SYSCONFIG 寄存器
1 SOFTRESET R/W Software reset.
This bit is automatically reset by the hardware.
During reads, it always returns 0.
0x0 = Normal mode
0x1 = The module is rese

软件复位。
该位由硬件自动复位。
在读取时,它总是返回0 。
0X0 =普通模式
为0x1 =该模块复位

4、设置GPIO方向
GPIO_OE[0-31] 寄存器
输出数据使能
0X0 =相应的GPIO端口被配置为输出。
0x1 =相应的GPIO端口配置为输入。

5、写入数据
为输出时
GPIO_SETDATAOUT[0-31] :为1时,此位置1
GPIO_CLEARDATAOUT[0-31]:为1时,此位置0,被清除掉

为输入时 GPIO_DATAIN[0-31]:读取此位的值
unsigned int GPIOPinRead(unsigned int baseAdd,
unsigned int pinNumber)
{
return(HWREG(baseAdd + GPIO_DATAIN) & (1 << pinNumber));
}


GPIO跑马灯示例如下:
/* Enabling functional clocks for GPIO1 instance. */
GPIO1ModuleClkConfig();

/* Selecting GPIO1[16] pin for use. */
GPIO1Pin16PinMuxSetup();

/* Selecting GPIO1[17] pin for use. */
GPIO1Pin17PinMuxSetup();

/* Selecting GPIO1[18] pin for use. */
GPIO1Pin18PinMuxSetup();

/* Selecting GPIO1[19] pin for use. */
GPIO1Pin19PinMuxSetup();

/* Enabling the GPIO module. */
GPIOModuleEnable(GPIO_INSTANCE_ADDRESS);

/* Resetting the GPIO module. */
GPIOModuleReset(GPIO_INSTANCE_ADDRESS);
for(i = 0;i < 4;i++)
{
/* Setting the GPIO pin as an output pin. */
GPIODirModeSet(GPIO_INSTANCE_ADDRESS,GPIO_INSTANCE_PIN_NUMBER(i),GPIO_DIR_OUTPUT);
}
UARTPuts("StarterWareGPIO \r\n", -1);//modified by wcl

while(1)
{

for(i = 0;i < 4;i++)
{
/* Driving a logic HIGH on the GPIO pin. */
GPIOPinWrite(GPIO_INSTANCE_ADDRESS,
GPIO_INSTANCE_PIN_NUMBER(i),
GPIO_

PIN_HIGH);
}

Delay(5000000);

for(i = 0;i < 4;i++)
{
/* Driving a logic LOW on the GPIO pin. */
GPIOPinWrite(GPIO_INSTANCE_ADDRESS,
GPIO_INSTANCE_PIN_NUMBER(i),
GPIO_PIN_LOW);
}
Delay(5000000);
UARTPuts(" led \r\n", -1);//modified by wcl
}

相关文档
相关文档 最新文档