LM3S811学习笔记——gpio简介
Lm3s系列的gpio的使用,这是最简单的实验,但是其功能也是最多的,与平时的使用最最关系密切的。
LM3S系列微处理器的GPIO功能模块提供了多达8个GPIO端口。每个功能模块都有如下功能:
1、可以配置成输入或输出模式。在复位后,默认为输入模式;
2、在输入模式下,能够产生高电平中断,低电平中断,上升沿中断,下降沿中断或者上、下沿中断;
3、在输出模式下,能配置成输出2毫安、4毫安、8毫安的驱动输出。在8毫安输出模式下,可以配置IO口的翻转速率用来控制信号的上升与下降的时间。在复位后,输出模式默认为2毫安驱动;
4、可选的弱上拉与下拉电阻。在复位后,sandstorm系列下为弱上拉,而其它模式为禁能状态;
5、可选的集电极开路模式。复位后,默认为标准的推挽式;
6、可以配置成GPIO或是专有功能外设。复位后,默认为GPIO端口。
具体应用方法如下:
1. 设置所选GPIO端口指定管脚的方向和模式
void GPIODirModeSet(unsigned long ulPort, // 所选GPIO端口的基址
unsigned char ucPins, // 指定管脚的位组合表示
unsigned long ulPinIO); // 管脚的方向或模式
2. 设置所选GPIO端口指定管脚的驱动强度和类型
void GPIOPadConfigSet(unsigned long ulPort,
unsigned char ucPins,
unsigned long ulStrength,
unsigned long ulPadType);
3. 设置所选GPIO端口指定的管脚为输入模
void GPIOPinTypeGPIOInput(unsigned long ulPort, unsigned char ucPins); // 该函数实际上是通过调用函数
GPIODirModeSet( )和GPIOPadConfigSet( )实现的,将指定管脚设置为输入模式
void GPIOPinTypeGPIOInput(unsigned long ulPort, unsigned char ucPins)
{
//
// Check the arguments.
//
ASSERT(GPIOBaseValid(ulPort));
//
// Make the pin(s) be inputs.
//
GPIODirModeSet(ulPort, ucPins, GPIO_DIR_MODE_IN);
//
// Set the pad(s) for standard push-pull operation.
//
GPIOPadConfigSet(ulPort, ucPins, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
}
需要注意的是,虽然GPIOPinTypeGPIOInput(unsigned long ulPort, unsigned char ucPins)是由GPIODirModeSet( )和GPIOPadConfigSet( )实现的,但是在设置输入端口是一定要注意,如果硬件电路没有设计上拉电阻,则不能用GPIOPinTypeGPIOInput()设置端口为输入,因为此函数并没有设置上拉。而应该用GPIODirModeSet( )和GPIOPadConfigSet( )实现,在GPIOPadConfigSet( )中设置端口为上拉,否则会无法读取按键信息。如:
/* 设置为输入端口 */
GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_DIR_MODE_IN);
/* 设置KEY强度和类型,2mA的输出驱动强度,设置为上拉管脚 */
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
GPIO_PIN_TYPE_STD // 推挽
GPIO_PIN_TYPE_STD_WPU // 带弱上拉的推挽
GPIO_PIN_TYPE_STD_WPD // 带弱下拉的推挽
GPIO_PIN_TYPE_OD // 开漏
GPIO_PIN_TYPE_OD_WPU // 带弱上拉的开漏
GPIO_PIN_TYPE_OD_WPD // 带弱下拉的开漏
GPIO_PIN_TYPE_ANALOG // 模拟比较器
参考:
1、stellaris固件库说明文档
2、网络资源