原创 lm3s6916的晶振

2010-3-21 09:12 1247 2 2 分类: MCU/ 嵌入式

lm3s6916的晶振


http://blog.ednchina.com/lds24原创


  在写lm3s6916程序过程中,一直都是惊喜不断的,举步艰难。


http://blog.ednchina.com/lds24原创


  在样板调试时遇上一个问题,就是在开发板上能运行的程序到样板上运行得不到我想要的结果。


http://blog.ednchina.com/lds24原创


  在样板上用的IO与开发板上不同,就出现在问题,当时也没有想到这个问题,开始当然是测量电压了,电压正常,测量晶振,坏了,没有起振,偶然发现在复位状态下,6M晶振能起振,一进到工作状态就停止了,示波器看不到有波形了。


http://blog.ednchina.com/lds24原创


  按照我的习惯,首先是怀疑电路的问题,检查了几遍没有发现问题,接着怀疑是IC的问题(老大笑我了),把开发板上的IC换过来,结果一样不行,这下我陷入迷茫了。


http://blog.ednchina.com/lds24原创


  没办法,时间耗不起,老大叫我打电话给周立功的技术支持,第二天打电话问,我说复位时晶振起振,进入工作时就不起振了,问是不是要设置什么参数之类的,对方说没有遇过这个问题,然后有一句没一句的聊,说到选择晶振的方法,说到了SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);这个函数,四个参数都对,我突然想起在这句之前还有做了别的事,会不会由那引起的。


http://blog.ednchina.com/lds24原创


  我在程序开始最前面加了防止JTAG失效的函数:


void jtagWait(void)//  防止JTAG失效
{
 //  定义KEY
 #define  SYSCTL_KEY  SYSCTL_PERIPH_GPIOF
 #define  KEY         GPIO_PORTF_BASE,GPIO_PIN_0


    SysCtlPeripheralEnable(SYSCTL_KEY);                         //  使能KEY所在的GPIO端口
    GPIODirModeSet(KEY, GPIO_DIR_MODE_IN);                     //  设置KEY所在管脚为输入
    GPIOPadConfigSet(KEY, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);


    if(GPIOPinRead(KEY)==0x00){                                 //  如果复位时按下KEY,则进入
        for (;;);                                               //  死循环,以等待JTAG连接
    }
    SysCtlPeripheralDisable(SYSCTL_KEY);                        //  禁止KEY所在的GPIO端口
}


问题就出在这里了。


http://blog.ednchina.com/lds24原创


  样板上做为防止JTAG失效的IO用的是F1,而不是开发板上的F0,由于F0没有接上拉电阻,程序开机后会进入上面这个子程序,就再也出不来了,也就没有执行SysCtlClockSet函数,所以默认晶振是不起振的,才有了以上的故事。


http://blog.ednchina.com/lds24原创


  好累......

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /1 下一条