这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LM3S811学习笔记——gpio简介

共7条 1/1 1 跳转至

LM3S811学习笔记——gpio简介

院士
2013-02-27 10:04:36     打赏



LM3S811学习笔记——gpio简介

Lm3s系列的gpio的使用,这是最简单的实验,但是其功能也是最多的,与平时的使用最最关系密切的。

LM3S系列微处理器的GPIO功能模块提供了多达8GPIO端口。每个功能模块都有如下功能:

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       // 模拟比较器


参考:

1stellaris固件库说明文档

2、网络资源




关键词: LM3S811     学习     笔记     简介     端口     模式     设置    

专家
2013-02-27 10:40:57     打赏
2楼

不错   顶一个  


工程师
2013-02-27 12:32:17     打赏
3楼
谢谢 分享

高工
2013-02-27 13:12:22     打赏
4楼
顶一个

助工
2013-02-27 14:55:34     打赏
5楼
顶!!

高工
2013-03-06 12:27:14     打赏
6楼

GPIO点灯,所有MCU入门的第一步。

点灯时候需要明白MCU的频率之类的,有PLL的还得弄上PLL。内部振荡器外部振荡器怎么选择,怎样切换时钟什么的

还得计算好时钟周期,以便得到闪烁频率。


院士
2013-03-06 13:25:00     打赏
7楼
LM3S系列的时钟配置还是比较简单的,也不像stm32每个外围都需要分配时钟

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]