msp430f5438a可以只用高频时钟吗?
需要如何设置?
我设置了始终没能成功启动晶振
SetVcoreUp(PMMCORE_2);
P5SEL |= BIT2+BIT3;
UCSCTL6 &= ~XT2OFF;
do{
UCSCTL7 &= ~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);
SFRIFG1 &= ~OFIFG;
}while(SFRIFG1&OFIFG);
程序是我在官方例程的基础上改的。仿真中发现,程序一直在while循环中,不能跳出来.
程序到底是什么地方不对,请大神指出来。
灰小子:
可以只用高频时钟的,翻了翻例程没找到这类例子。
详细的使用方法看看手册吧:http://www.ti.com.cn/cn/lit/ug/slau208p/slau208p.pdf 5.2部分
xueyang zhang:
有没有人知道啊,
xueyang zhang:
回复 灰小子:
我看了手册,也看了官方的例程,
在基于官方例程上做了些改动,但是不行,启动不了。
灰小子:
回复 xueyang zhang:
启动不了的原因有很多,能否上传下你的电路图和代码?
user1866843:
如果你只使用XT2,那扫描XT1和DCO干什么呢?
xueyang zhang
msp430f5438a可以只用高频时钟吗?
需要如何设置?
我设置了始终没能成功启动晶振
SetVcoreUp(PMMCORE_2);
P5SEL |= BIT2+BIT3;
UCSCTL6 &= ~XT2OFF;
do{
UCSCTL7 &= ~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);
SFRIFG1 &= ~OFIFG;
}while(SFRIFG1&OFIFG);
程序是我在官方例程的基础上改的。仿真中发现,程序一直在while循环中,不能跳出来.
程序到底是什么地方不对,请大神指出来。
xueyang zhang:
回复 user1866843:
不扫描xh1和dco也是一样的,都不能启动,一直有SFRIFG1的OFIIG标志位的错误。
灰小子:
回复 xueyang zhang:
楼主你好,能否把完整的错误信息发上来?
一般程序是先判断标志位,等待晶振起振,然后再清除。先清除标志位,再判断的时候晶振不一定成功起振.
程序结构这样:
while (SFRIFG1 & OFIFG){UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// 清除三类时钟标志位// 这里需要清除三种标志位,因为任何一种// 标志位都会将OFIFG置位SFRIFG1 &= ~OFIFG;// 清除时钟错误标志位}xueyang zhang:
回复 灰小子:
WDTCTL=WDTPW | WDTHOLD;
SetVcoreUp(PMMCORE_2);
P5SEL |= BIT2+BIT3;
UCSCTL6 &= ~XT2OFF;
do{
UCSCTL7 &= ~(XT2OFFG);
SFRIFG1 &= ~OFIFG;
}while(SFRIFG1&OFIFG);
程序我改成这样了,编译没有问题,下载之后仿真看到程序一直在while循环中,
xueyang zhang:
回复 灰小子:
我的XT1用于了其他功能得嘛,这个时钟标志位虽然清除了,但是XT1端口没有时钟也一样会出错。问题是不是这样?