6389|11

928

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

LM3s8962体验之三……KEY&LED 超简单,不用库 [复制链接]

                  GPIO口测试

     当单片机用,没有用库,全是对寄存的理解。

 

LED&KEY.rar (37.24 KB, 下载次数: 114)

[ 本帖最后由 sdjntl 于 2010-11-18 17:31 编辑 ]

最新回复

精彩的描述过程,让人看的眼花缭乱,不过这就是学习精神,认真,认真,再认真!  详情 回复 发表于 2011-7-18 10:47

赞赏

1

查看全部赞赏

 
点赞 关注(1)
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709

回复
举报

928

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

                 GPIO口测试

简介: 当单片机用,没有用库,全是对寄存的理解。

功能:通过判断KEY UP有没有按下,按则点亮LED,否则熄灭LED

分析:

一、原理图部分:

   1KEY

  

 

键盘KEY UP的按钮部分

通过跳线的连接。

连接到CPU

 

通过以上原理图,KEY UP对应于PE0

 

 

2LED

 

LED 部分

 

 

跳线部分

连接到CPU

通过以上原理图,LED对应于PF0。

[ 本帖最后由 sdjntl 于 2010-11-18 17:40 编辑 ]
 
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709
 

回复

928

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

一、程序分析。

1、定义一个宏函数访问寄存器

  #define HWREG(x)       (*((volatile unsigned long *)(x))) 

    读取时都返回硬件寄存器的当前值、写入时都会把最新的数值写入硬件寄存器。

2宏定义寄存器,只一种简单的代换,方便使用。

#define SYSCTL_PERIPH_GPIOF     0x20000020                              /*  GPIO F                      */

#define SYSCTL_PERIPH_GPIOE     0x20000010                              /*  GPIO E                      */

#define SYSCTL_RCGC2         0x400fe108                              /*  运行模式时钟门控寄存器2     */

#define GPIO_PORTE_BASE         0x40024000                              /*  GPIO Port E                 */

#define GPIO_PORTF_BASE     0x40025000                              /*  GPIO Port F                 */

#define GPIO_O_DIR               0x00000400                              /*  数据方向寄存器  偏移量      */

#define GPIO_O_AFSEL         0x00000420                              /*  模式控制寄存器  偏移量      */

#define GPIO_O_DATA              0x00000000                              /*  数据寄存器     偏移量       */

#define GPIO_O_DR4R             0x00000504                              /*  4mA驱动选择    偏移量       */

 

[ 本帖最后由 sdjntl 于 2010-11-18 17:43 编辑 ]
 
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709
 
 

回复

928

帖子

0

TA的资源

五彩晶圆(高级)

4
 

3、使能GPIO口。

 HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOE & 0x0fffffff;            /*  使能GPIO PE口外设           */

HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOF & 0x0fffffff;            /*  使能GPIO PF口外设           */

该寄存器用来控制时钟选通逻辑。每个位控制一个给定接口、功能、或单元的时钟使能。如果置位,

则对应的单元接收时钟并运行。否则,对应的单元不使用时钟并禁止(节能)。如果功能单元不使

用时钟,那么在对该单元进行读或写操作时都将返回总线故障。除非特别说明,否则这些位的复位

状态都为0(不使用时钟),即所有功能单元都禁止。应用所需的端口需通过软件来使能。注:这些

寄存器除了含有对接口、功能、或单元进行控制的位以外,还可能含有其它位,这样可保证与其它

系列以及将来的部件实现合理的代码兼容。 RCGC2是运行操作的时钟配置寄存器,SCGC2是睡眠

操作的时钟配置寄存器,DCGC2是深度睡眠操作的时钟配置寄存器。当 运行模式时钟配置 (RCC)

寄存器的ACG位置位时,表示系统使用睡眠模式。

 

[ 本帖最后由 sdjntl 于 2010-11-18 17:43 编辑 ]
 
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709
 
 

回复

928

帖子

0

TA的资源

五彩晶圆(高级)

5
 

4、设置GPIO的驱动电流,输入输出方式等。

HWREG(GPIO_PORTE_BASE + GPIO_O_DIR) &= ~KEY;                       /*  GPIO PE2为输入              */

    HWREG(GPIO_PORTE_BASE + GPIO_O_AFSEL) &= ~KEY;                     /*  PE2GPIO功能               */

 

    HWREG(GPIO_PORTF_BASE + GPIO_O_DIR) |= LED;                        /*  GPIO PF0为输出              */

    HWREG(GPIO_PORTF_BASE + GPIO_O_AFSEL) &= ~LED;                     /*  PE0GPIO功能               */

 

                                                                       /*设置为4mA驱动                 */

    HWREG(GPIO_PORTE_BASE + GPIO_O_DR2R) = (HWREG(GPIO_PORTE_BASE + GPIO_O_DR2R) | KEY);

 

                                                                        /*设置为推挽管脚                */

    HWREG(GPIO_PORTE_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTE_BASE + GPIO_O_DEN) | KEY);

 

                                                                        /*设置为推挽管脚                */

    HWREG(GPIO_PORTE_BASE + GPIO_O_WPU) = (HWREG(GPIO_PORTE_BASE + GPIO_O_WPU) | KEY);

   

                                                                        /*设置为4mA驱动                 */

    HWREG(GPIO_PORTF_BASE + GPIO_O_DR4R) = (HWREG(GPIO_PORTF_BASE + GPIO_O_DR4R) | LED);

 

                                                                        /*设置为推挽管脚                */

    HWREG(GPIO_PORTF_BASE + GPIO_O_DEN) = (HWREG(GPIO_PORTF_BASE + GPIO_O_DEN) | LED);

 
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709
 
 

回复

928

帖子

0

TA的资源

五彩晶圆(高级)

6
 

5、操作GPIO

  while (1) {

 

  if (HWREG(GPIO_PORTE_BASE + (GPIO_O_DATA + (KEY << 2))))

       {      /*  KEY UP引脚的值,并判断,如果为高,则熄灭LED            */

           HWREG(GPIO_PORTF_BASE + (GPIO_O_DATA + (LED << 2))) = LED;

       }

      else

     

 

      {   /*  否则点亮LED3                */

           HWREG(GPIO_PORTF_BASE + (GPIO_O_DATA + (LED << 2))) = ~LED;

      }

          }

 
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709
 
 

回复

79

帖子

0

TA的资源

一粒金砂(中级)

7
 
学习得挺认真的  顶下
 
个人签名机遇总是给有准备的人呢
 
 

回复

545

帖子

0

TA的资源

一粒金砂(高级)

8
 

支持一下

 
 
 

回复

928

帖子

0

TA的资源

五彩晶圆(高级)

9
 
想来还是用库简单,只是学不到控制过程。
 
个人签名动手创造个性自我

https://home.eeworld.com.cn/?95709
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

10
 
thank u
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(高级)

11
 

原帖由 sdjntl 于 2010-11-20 14:30 发表 想来还是用库简单,只是学不到控制过程。

 

如果是用51,对这样的回复还是可以理解的。

但对于嵌入式系统,这样的说法未免牵强了点。

 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

12
 
精彩的描述过程,让人看的眼花缭乱,不过这就是学习精神,认真,认真,再认真!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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