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原创
好累......
文章评论(0条评论)
登录后参与讨论