1。 硬件特性研究:
GPIO模块由 7个物理GPIO 模块组成,每个对应一个独立的GPIO端口(端口A, 端口B, 端口C, 端口 D, 端口E, 端口F, 和端口G, )。GPIO模块遵循FiRM规范,并且支持5-42 个可编程的输入/输出管 脚,具体取决于正在使用的外设。
问题分析,针对LM3S8962的7个GPIO 模块,参考如下图
上图是LM3S8962 LQFP100封装的原理图:
GPIO A端口:管脚如下分配:
PA0/U0RX : A端口的A0管脚,同时兼容串口0的RX(接收), 26脚
PA1/U0TX : A端口的A1管脚,同时兼容串口0的TX(发送),27脚
PA2/SS0CLK: A端口的A2管脚,同时兼容SSI总线的Clk(时钟),28脚
PA3/SS0Fss: A端口的A3管脚,同时兼容SSI总线的Fss(片选),29脚
PA4/SS0Rx: A端口的A4管脚,同时兼容SSI总线的Rx(接收),30脚
PA5/SS0Tx: A端口的A5管脚,同时兼容SSI总线的Tx(时钟),31脚
PA6/CCPI : A端口的A6管脚,同时兼容捕获/比较/PWM1,34脚
PA7 : A端口的A7管脚,无复用管脚,35脚
如果使用上面8个管脚为普通的IO管脚,需要做如下设置:方能有效:
第一步:使能GIPOA ,设置A端口硬件有效,使用下面的语句:
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); ,这是GPIO端口的驱动函数
SYSCTL_PERIPH_GPIOA: 使能A端口8个GPIO位的函数值
第二步:设置管脚的输入输出类型:
GPIOPinTypeGPIOOutput( GPIO_PORTA_BASE,GPIO_PIN_0 | GPIO_PIN_1 |GPIO_PIN_2 |GPIO_PIN_3);
GPIOPinTypeGPIOOutput: 这是GPIO端口IO管脚输入输出类型设置的驱动函数
GPIO_PIN_0: 管脚类型设置的函数驱动值
前面两步是必须的。
第三步,可以设置管脚输出电流(如果设置为输出类型)
GPIOPadConfigSet(GPIO_PORTA_BASE,GPIO_PIN_0,GPIO_STRENGTH_4MA,GPIO_PIN_TYPE_STD);
上面这个函数,设置GPIO A端口,输出电流4毫安。
关于函数的具体含义见后续贴子中。
第四步:可以设置管脚输出值了:
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_3,0x00); 该函数设置A3输出为0
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_3,0x08); 该函数设置A3输出为1
上面简单,操作GPIO A端口写功能,不清楚的地方,坛友可以补充
|