6895|15

545

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

LM3S8962GPIO操作(控制用户LED1闪烁) [复制链接]

拿到板子了,开始学习LM3S8962了,当然最基本的还是要掌握GPIO口操作了。

 

一、GPIO介绍

Stellaris 系列GPIO模块由 38个物理 GPIO块组成,LM3S8962 GPIO端口有PAPBPCPDPEPFPGPH物理 GPIO 。每个 GPIO端口包含 8 个管脚,如 PA 端口是 PA0PA7GPIO模块支持多达 60 个可编程输入/输出管脚(具体取于与 GPIO 复用的外设的使用情况) LM3S8962GPIO管脚有以下功能:

1可配置用作输入或输出。复位时默认用作输入;

2在输入模式中,可以在高电平、低电平、上升沿、下降沿或两个边沿时产生中断;

3  在输出模式中,可以配置成 2mA4mA 8mA 的驱动能力。8mA 的驱动能力配

置有可选的斜率控制,用来限制信号的上升和下降时间。复位时默认具有 2mA

驱动能力;

4可选的弱上拉或下拉电阻。复位时默认为弱上拉;

5可选的开漏操作。复位时默认为标准的推/挽操作;

6可以配置用作一个 GPIO 或一个外设管脚。复位时默认用作 GPIO。注意:并非所有器件的所有管脚都有外设功能,在这种情况下管脚就只用作 GPIO(即当管脚被配置用作外设功能时不会做任何有用的事)

 

最新回复

确实不错,我使用后立即可以进行操作了!  详情 回复 发表于 2013-3-12 14:37
 
点赞 关注

回复
举报

545

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

下面介绍一下常用GPIO操作函数:

一 使能 GPIO

通常,Stellaris 系列 ARM 所有片内外设只有在使能以后才可以工作,否则被禁止。暂

不用的片内外设被禁止后可以节省功耗。GPIO 也不例外,复位时所有 GPIO 模块都被禁,在使用 GPIO模块之前必须首先要使能。例如:

 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);   //    使能GPIOB模块

 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);   //    使能GPIOG模块

[ 本帖最后由 beyondvv 于 2010-11-7 02:05 编辑 ]
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

二、GPIO基本设置

2.1函数GPIODirModeSet( )

功能  设置所选GPIO端口指定管脚的方向和模式

原型  void GPIODirModeSet(unsigned long ulPort, unsigned char ucPins, unsigned long ulPinIO)

参数

ulPort:所选GPIO端口的基址,应当取下列值之一:

   GPIO_PORTA_BASE    //    GPIOA的基址(0x40004000

   GPIO_PORTB_BASE   //    GPIOB的基址(0x40005000

   GPIO_PORTC_BASE   //    GPIOC的基址(0x40006000

   GPIO_PORTD_BASE    //    GPIOD的基址(0x40007000

   GPIO_PORTE_BASE   //    GPIOE的基址(0x40024000

   GPIO_PORTF_BASE    //    GPIOF的基址(0x40025000

   GPIO_PORTG_BASE    //    GPIOG的基址(0x40026000

   GPIO_PORTH_BASE    //    GPIOH的基址(0x40027000

 

 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

4
 

ucPins:指定管脚的位组合表示,应当取下列值之一或者它们之间的任意“或运算”组合形式:

   GPIO_PIN_0   //    GPIO管脚 0的位表示(0x01

   GPIO_PIN_1   //    GPIO管脚 1的位表示(0x02

   GPIO_PIN_2   //    GPIO管脚 2的位表示(0x04

   GPIO_PIN_3   //    GPIO管脚 3的位表示(0x08

   GPIO_PIN_4   //    GPIO管脚 4的位表示(0x10

   GPIO_PIN_5   //    GPIO管脚 5的位表示(0x20

   GPIO_PIN_6   //    GPIO管脚 6的位表示(0x40

   GPIO_PIN_7   //    GPIO管脚 7的位表示(0x80

 ulPinIO:管脚的方向或模式,应当取下列值之一:

   GPIO_DIR_MODE_IN   //   输入方向

   GPIO_DIR_MODE_OUT   //   输出方向

   GPIO_DIR_MODE_HW   //   硬件控制

例如我们要设置GPIO_PORTF端口的F1管脚为输出方向,可以用这个函数来设置:

GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT);

 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

5
 

 2.2函数GPIOPadConfigSet( )

功能  设置所选GPIO端口指定管脚的驱动强度和类型

原型

void GPIOPadConfigSet(unsigned long ulPort,

        unsigned char ucPins,

        unsigned long ulStrength,

        unsigned long ulPadType)

参数

ulPort:所选GPIO端口的基址

ucPins:指定管脚的位组合表示

ulStrength:指定输出驱动强度,应当取下列值之一:

   GPIO_STRENGTH_2MA    //  2mA驱动强度

   GPIO_STRENGTH_4MA    //  4mA驱动强度

   GPIO_STRENGTH_8MA    //  8mA驱动强度

   GPIO_STRENGTH_8MA_SC  //    带转换速率(Slew Rate)控制的8mA驱动

ulPadType:指定管脚类型。应当取下列值之一:

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

GPIO 管脚的电流驱动强度可以选择 2mA4mA8mA 或者带转换速率(Slew Rate

控制的 8mA 驱动。驱动强度越大表明带负载能力越强,但功耗也越高。对绝大多数应用场

合选择 2mA 驱动即可满足要求。GPIO 管脚类型可以配置成输入、推挽、开漏三大类,每

一类当中还有上拉、下拉的区别。对于配置用作输入端口的管脚,端口可按照要求设置,但

是对输入唯一真正有影响的是上拉或下拉终端的配置。

例如要设置GPIO_PORTF端口的F1管脚为推挽输出且输出驱动能力为2ma,可以用这个函数来设置:

GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD)

 

 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

6
 

2.3  函数 GPIOPinWrite( )

功能  向所选GPIO 端口的指定管脚写入一个值,以更新管脚状态

原型  void GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal);

参数

ulPort:所选GPIO端口的基址

ucPins:指定管脚的位组合表示

ucVal:写入指定管脚的值

注:ucPins 指定的管脚对应的 ucVal 当中的位如果是 1,则置位相应的管脚,如果是 0

零相应的管脚;ucPins未指定的管脚不受影响。

返回 

例如要想GPIO_PORTF端口的F1管脚写入0,可以用这个函数

GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1 , 0x00);

2.4函数 GPIOPinRead( )

功能  读取所选GPIO端口指定管脚的值

原型  long GPIOPinRead(unsigned long ulPort, unsigned char ucPins)

参数

ulPort:所选GPIO端口的基址

ucPins:指定管脚的位组合表示

返回

返回1个位组合的字节。该字节提供了由ucPins指定管脚的状态,对应的位值表示GPIO 管脚的高

低状态。ucPins未指定的管脚位值是0

例如我们要想读取GPIO_PORTF端口的F1的状态,可以用这个函数

GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_1)

 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

7
 

学习了这些几个GPIO函数操作就可以简单的控制GPIO口了,下面用一最简单的闪烁灯来说明GPIO口的操作:

实验例程说明:开发板用户LED1每秒闪烁一次,

 

#define  PINS1  GPIO_PIN_0   //定义用户LED1所在的端口

int  main (void)

{

SysCtlClockSet( SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |

                          SYSCTL_XTAL_8MHZ );                                                       /*  设定晶振为时钟源            */

                     

    SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOF);                      /*  使能GPIOF口外设             */

  

       GPIODirModeSet(GPIO_PORTF_BASE, PINS1, GPIO_DIR_MODE_OUT);

                                                                                                                /*  设置 GPIO F0为输出口        */

    GPIOPadConfigSet(GPIO_PORTF_BASE,PINS1,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);

                                                                                                              /*  配置端口类型为 2ma推挽输出               */

       GPIOPinWrite(GPIO_PORTF_BASE,PINS1, 0);                            /*初始化GPIO                   */

   while (1)

       {

       GPIOPinWrite(GPIO_PORTF_BASE, PINS1, 0x00);

      

      SysCtlDelay(1000 * (SysCtlClockGet() / 3000));//1000毫秒延时

         GPIOPinWrite(GPIO_PORTF_BASE, PINS1, 0xff);

      SysCtlDelay(1000* (SysCtlClockGet() / 3000));;

    }

}           [ 本帖最后由 beyondvv 于 2010-11-7 02:08 编辑 ]
 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

8
 
实验所用KEIL例程 led1.rar (58.98 KB, 下载次数: 67)
 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

9
 

未完待续GPIO中断操作

 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(初级)

10
 
楼主写的很详细,期待更进一步学习的资料哦!
 
 
 

回复

196

帖子

0

TA的资源

一粒金砂(高级)

11
 
楼主很强大。。。我刚刚收到 板子。。还不知道怎么学习。。希望想楼主请教请教。。

加个 联系方式呗。。。。。。。QQ 136824418

              谢了
 
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

12
 

呵呵,有什么问题可以在论坛上提问,大家一起来讨论,一起学习。

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

13
 

不错i

写得真的不错,很简洁,很有总结性。
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

14
 

不错

谢谢你提供的资料
 
 
 

回复

121

帖子

0

TA的资源

纯净的硅(初级)

15
 
学习了·····谢谢分享!
 
 
 

回复

157

帖子

0

TA的资源

纯净的硅(初级)

16
 
确实不错,我使用后立即可以进行操作了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表