搜索
bottom↓
回复: 0

关于MSP430 导致XT1LFOFFG=1晶振故障检测无法通过的现象总结

[复制链接]

出0入0汤圆

发表于 2012-12-28 10:48:20 | 显示全部楼层 |阅读模式
以前写程序,长碰到这个现象;
本来程序好好地,加了一个函数之后,程序就不怕了,一进入调试状态,就停留在晶振故障检测处:
  do{                                                       // 循环检测直到XT1,XT2和DCO稳定
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除XT1,XT2,DCO故障标志
  SFRIFG1 &= ~OFIFG;                                      // 清除故障标志
}while (SFRIFG1&OFIFG);                                   // 查询振荡器故障标志
  UCSCTL6 &= ~(XT2DRIVE0+XT2DRIVE1);                        // 根据预期的频率设置XT2驱动器驱动能力 当前为最高
  UCSCTL4 |= SELA_0+SELS_5 + SELM_5;                        // ACLK=XT1CLK, SMCLK=XT2CLK, MCLK=XT2CLK
也就是上面的do while循环中;
总有一个标志位等于1;

我说下有什么原因导致无法正常执行上面的语句:
1)外部晶振故障,晶振质量问题或者匹配电容导致的,这个是比较常见的原因;
2)尽量不要超过单片机的最大工作频率,这就不解释了;
3)编译器优化问题,这个是最无法注意到的,尤其是在调试系统阶段;
我描述下我的经历:
开始跑个uc系统,大概在70多KB code,无忧化,系统跑的很正常;后来增加了一个新功能函数;
程序再次运行时卡在晶振故障检测循环里,无法跳出,试过变量no_init,函数调用换个位置,都无法实现;
最后偶然间,将编译优化由debug换成medium,系统正常运行,这个很奇怪,如果要深究的话也只能找IAR公司了;  

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-6 08:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表