[求助] LM3问题求救

heningbo   2011-5-16 09:57 楼主

我下载了网址为:https://bbs.eeworld.com.cn/thread-290529-1-1.html的楼主写的程序,下载到自己的板子里,现象是:L3L7L5循环闪烁。当我把程序什么都不动,编译以后,所有的灯(L3-L8)常亮。修稿程序也是一样。

 

这是为什么呢?

 

紧急

回复评论 (9)

呵呵不知道楼主解决没有。我明白你的问题了。我之前自己写了一个简单的led,跑完了想参考下大家写得炫的,于是也下载了这个程序,也发现你这个问题。楼主把对应1脚设为高电平的写法稍改下,如:GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,1)改为GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,~0)或者GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,2)试试看,呵呵相信你会明白怎么回事
点赞  2011-5-16 11:18
我试试吧,谢谢啦
点赞  2011-5-16 11:23
按照你说的办了,还是不行,不知道为什么
点赞  2011-5-16 13:08
点赞  2011-5-16 15:53
我之前是以为对某一个端口的对应位写数据直接就是GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_X,data),data要么为0要么为1,后来就发现出现只有L3 L5 L7三个灯能正确置位,搞不懂,看了函数库才明白,这个写函数是对X管脚对应的data当中的位写为0或1,不知道你是不是跟我一样在这个地方理解错了
点赞  2011-5-16 16:12

引用: 原帖由 heningbo 于 2011-5-16 13:08 发表 按照你说的办了,还是不行,不知道为什么

 

没啥大问题,小笔误而已,jtag.c的宏定义写错了一点,导致程序死在startup.s里:

;******************************************************************************
;
; This is the code that gets called when the processor receives a fault
; interrupt.  This simply enters an infinite loop, preserving the system state
; for examination by a debugger.
;
;******************************************************************************
FaultISR
        B       FaultISR

笔误.jpg

碰到这类问题,建议Debug的方式来查错,在程序中设多几个断点,看程序跑在哪里出了问题。逐步排查。最终运行效果是三个灯在那里轮流闪。

附上我用的Jtag防锁死代码,针对EK-LM3S811,复位时按住USER按键S2,程序进入JtagWait死循环的时候,Status LED会闪烁,表示在等待Jtag连接。

//防止JTAG失效,上电或者复位时按下板上的USER按键,进去此函数,板上Status LED一直闪烁。
void JtagWait(void)
{
 unsigned long i;
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);    // 使能KEY、LED所在的PC端口
 GPIOPinTypeGPIOInput(GPIO_PORTC_BASE, GPIO_PIN_4);   // 设置KEY所在管脚PC4为输入
 GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 ); // 设置LED所在管脚PC5为输出
 if (GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4) == 0x00) // 若复位或上电时按下KEY,则进入
 {  
  while(1) //死循环,以等待JTAG连接,LED闪烁
  {
   for(i=0;i<200000;i++);
   GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_5,GPIO_PIN_5); //点亮LED
   for(i=0;i<200000;i++);
   GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_5,~GPIO_PIN_5); //熄灭LED
  }
 }
 SysCtlPeripheralDisable(SYSCTL_PERIPH_GPIOC);    // 禁止KEY所在的GPIO端口
}

点赞  2011-5-17 01:46

回复 7楼 David_Lee 的帖子

学习了嘿嘿  谢谢david  lee
点赞  2011-5-17 07:55
谢谢了啊

以评分了
点赞  2011-5-17 09:21
是的,确实有bug ,开始的程序配置防锁有点问题,延迟时间太短,后来程序已更新过。
点赞  2011-5-23 07:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复