[应用相关] 程序总死在for那里

[复制链接]
1251|19
 楼主| feiqi1 发表于 2019-10-12 18:40 | 显示全部楼层 |阅读模式
/******************************************************************/
void Init_Clk( void )
{
    WDTCTL = WDTPW + WDTHOLD;                 // 关看门狗
    BCSCTL3 |= XT2S_2;                        // XT2频率范围设置
    BCSCTL1 &= ~XT2OFF;                       // 打开XT2振荡器
    do
    {
        IFG1 &= ~OFIFG;                       // 清振荡器失效标志
        BCSCTL3 &= ~XT2OF;                    // 清XT2失效标志
        for( uint i = 0x47FF; i>0; i-- );   // 等待XT2频率稳定
    }while (IFG1 & OFIFG);                    // 外部时钟源正常起动了吗?
    BCSCTL2 |= SELM_2 + SELS ;                // 设置MCLK、SMCLK为XT2
}

程序总死在for那里,外部晶振不需要接吧?
androidbus 发表于 2019-10-12 18:45 | 显示全部楼层
如果对精度没要求的话   可以不设计外部晶体 使用内部的。。
litengg 发表于 2019-10-12 18:46 | 显示全部楼层
判断OFIFG位是否已经变化了   
qiangweii 发表于 2019-10-12 18:48 | 显示全部楼层
当用外部晶振时,如果外部晶振起震了,那OFIFG就会变为0  。
shashaa 发表于 2019-10-12 18:49 | 显示全部楼层
从前一句的逻辑看应该是对IFG1中的OFIFG位进行清0操作吧。  
xia00 发表于 2019-10-12 18:52 | 显示全部楼层
如果晶体确实没有起振就不能。
hfdy01 发表于 2019-10-12 18:53 | 显示全部楼层
这个可以简化为while (IFG1 & OFIFG)     
CallReceiver 发表于 2019-10-12 18:56 | 显示全部楼层

如果晶振本身启振有问题的话,在你清之后,它又马上置位了  
CallReceiver 发表于 2019-10-12 18:56 | 显示全部楼层
从FLL-CTL1的标志位中看到是RC振荡器失效  
boy1990 发表于 2019-10-12 18:57 | 显示全部楼层

出错的晶振是高速的还是低速的?
sourceInsight 发表于 2019-10-12 19:00 | 显示全部楼层
晶体振荡是否正常工作中断标志位。
bbapple 发表于 2019-10-12 19:01 | 显示全部楼层
如果没起震就一起do while 吧
handleMessage 发表于 2019-10-12 19:04 | 显示全部楼层

OFIFG是振荡器标失效标志位  。。
zhouhuanの 发表于 2019-10-12 19:04 | 显示全部楼层

清除三类时钟标志位 SFRIFG1 &= ~OFIFG  
wanglaojii 发表于 2019-10-12 19:07 | 显示全部楼层
在线调试时单步总是跳不过去  。。。。
laozhongyi 发表于 2019-10-12 19:07 | 显示全部楼层
如果振荡器出错,那程序总能在这段程序中检测到  
Edisons 发表于 2019-10-12 19:09 | 显示全部楼层
全速运行到启振判定程序的后面,如果OFIFG还是1  ,说明有问题。。
_gege 发表于 2019-10-12 19:10 | 显示全部楼层

IFG1&=~OFIFG;对OFIFG位做异或运算。
Mozarts 发表于 2019-10-12 19:11 | 显示全部楼层
XT2是外部晶振啊,肯定要接的,试试把i的值改小点看看
Listate 发表于 2019-10-12 19:12 | 显示全部楼层
没有电源管理芯片 会有什么后果?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部