5019|8

391

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

学习LM3S811有感 [复制链接]

来分享一下我学习LM3S811的趣事……

   我是通过参加TI M3 DAY 获得LM3S811评估板的,拿到板子后心情很是激动,于是就立刻投入了学习中。
   开始没有看任何PDF的介绍就尝试着把软件附带的例程下载进了芯片中,有一个例程是JTAG-GPIO,这个例程下进去后接着就不能再下载别的例程了,那时候估计是锁住了,心想这下完蛋了,可是当我重装了驱动后竟然奇迹般的好了,后来我认真地看了看《JTAG防锁死和LM3S系列几个基本例程》,还有看了看在网上找到了M3的资料,看后第一感觉是M3其实并没有传说中的那么难学,倒是感觉很容易学的。
   仅仅玩单片机无非就是对寄存器的配置(比如PX=0X…),但是玩M3不是这样的,编写M3的程序时主要是对函数的调用,对有参函数进行参数设置和匹配以及灵活运用带有返回值的函数,但是一系列函数的原型我还无从得知,我猜应该在driverlib.lib中。
   关于JTAG的防锁死功能其实是很简单同时又很有趣的:

#define     KEY_PERIPH             SYSCTL_PERIPH_GPIOC  //宏定义 加强程序的可读性
#define     KEY_PORT               GPIO_PORTC_BASE
#define     KEY_PIN                GPIO_PIN_4
   void JtagWait(void)
{

    SysCtlPeripheralEnable(KEY_PERIPH);             //  使能KEY所在的GPIO端口      (GPIO C)
    GPIOPinTypeGPIOInput(KEY_PORT, KEY_PIN);        //  设置KEY所在管脚为输入
    if (GPIOPinRead(KEY_PORT, KEY_PIN) == 0x00)   //  若复位时按下KEY,则进入
       {     while(1);  }                          //  死循环,以等待JTAG连接     
    GPIOPinIntDisable(KEY_PERIPH,KEY_PIN);          //  禁止KEY所在的GPIO端口中断
}
LM3S811评估板上用户按键是PC4  JtagWait函数放在主程序的首位置。
当复位后先判断按键,如果没有按下程序继续向下执行,如果按下则死循环等待。
试想一下如果将JTAG作为GPIO后程序将不能下载进去,如果程序中加入JtagWait函数,那么先按下复位键再按下用户键然后松开复位键(此时保持用户键按下少许),则此时程序停在while(1);处,这时候JTAG并没有作为GPIO,因为程序停在while(1);处而并没有执行后面的程序(后面的程序将JTAG当做GPIO使用了),然后接着下载你编好的程序(有时候会不太灵敏,多试几次就好了)
有了JtagWait函数后就不用再担心芯片被锁死了。
   后来又编写了几个流水灯程序,算是稍稍入门了。(当然我觉得入门单片机的基础是学会 1时钟部分 2定时器 3中断)  呵呵 个人见解
   前几天用M3做了一款乒乓球游戏(在TFT彩屏上面实现的)
   做这款游戏使用到M3的内部资源有TIMER0和TIMER1及其中断、外部中断(用来进行键盘输入)等,游戏分为四关,每一关速度递增(通过配置晶振来实现)。
   当然做的过程中也是遇到了好多困难。
   比如开始时我的外部中断用的GPIO是PB0和PB1,老是不能进入中断导致球拍不能运动,后来发现PB0和PB1连接的是LED,后来把外部中断换为了PB2和PB3,总算好了。
//******************************GPIOB中断服务函数******************************************
void GPIO_Port_B_ISR(void)
{  
           unsigned long ulStatus;
      ulStatus = GPIOPinIntStatus(GPIO_PORTB_BASE, true);       // 读取中断状态
      GPIOPinIntClear(GPIO_PORTB_BASE, GPIO_PIN_2|GPIO_PIN_3);  // 清除中断状态,重要
      if (ulStatus & GPIO_PIN_2)                                // 如果PB0 的中断状态有效
      {
                   TimerEnable(TIMER1_BASE, TIMER_A);/*启动定时器1*/
                            racket_dir=0;/*球拍朝左运动*/
      }
      if (ulStatus & GPIO_PIN_3)                                // 如果PB1 的中断状态有效
      {
         TimerEnable(TIMER1_BASE, TIMER_A);/*启动定时器1*/
                           racket_dir=1;/*球拍朝右运动*/
      }
}
   当球拍没有接到球后就进入死循环,后来想了一下为什么不把死循环换为睡眠状态呢,不错就睡眠状态,呵呵  低功耗嘛
   今晚就先写到这里吧…………

最新回复

学习了,不错  详情 回复 发表于 2012-11-30 10:44
 
点赞 关注

回复
举报

281

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
看不懂。。
 
个人签名[url=http://www.51great.org/]嵌入式培训[/url
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这么好的帖子没人回,伯乐在此!
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

4
 
恩 写得不错,请教学习啊
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(中级)

5
 
上程序啊
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 qwertyuiop11111 的帖子

看看这个吧
https://bbs.eeworld.com.cn/thread-285667-1-1.html
对你有帮助。
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

7
 
很好,学习中!
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

8
 
谁有lm3s811的配套光盘资料  有的话  发我一份  676548100@qq.com   谢谢:carnation:
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(初级)

9
 
学习了,不错
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表