智能车制作
标题:
单片机程序的问题...估计没有人能解答...
[打印本页]
作者:
henrys
时间:
2011-11-3 14:00
标题:
单片机程序的问题...估计没有人能解答...
本帖最后由 henrys 于 2011-11-3 14:01 编辑
void
SetBusCLK_64M(
void
)
{
CLKSEL
=
0X00
;
PLLCTL_PLLON
=
1
;
SYNR
=
0xc0
|
0x07
;
REFDV
=
0x80
|
0x01
;
POSTDIV
=
0x00
;
_asm(nop);
_asm(nop);
while
(
!
(CRGFLG_LOCK
==
1
));
CLKSEL_PLLSEL
=
1
;
}
单片机每次运行到:
while
(
!
(CRGFLG_LOCK
==
1
));
这一句就停住了.......
程序不往下跑,一直停在这里...
所有的口都没有反应...
我改成:
while
(
!
(CRGFLG_LOCK
==0
));
所有口就有反应了...
但是这样会造成系统不稳定的...
求解答~~~
此帖沉下去的几率很高啊!!!!
作者:
sonwendi
时间:
2011-11-3 14:06
为啥不用 while(!CRGFLG_LOCK); 呢?
作者:
568581185
时间:
2011-11-3 14:10
while(!(CRGFLG_LOCK==1));
复制代码
楼主,如果你的程序一直停在这,就表示你单片机的CRGFLG_LOCK一直是为0的
检测不到1,所以程序一直在这步空跳。。。。
不知道是你的硬件出了问题还是咋的
我们原来超过80M
作者:
henrys
时间:
2011-11-3 14:12
回复
2#
sonwendi
我是自己做的系统板,程序可以烤进去的...
用while(!CRGFLG_LOCK);的话
是不是就是CRGFLG_LOCK=0的时候就会跳出这个循环了??
这样超频还有效吗??
作者:
568581185
时间:
2011-11-3 14:16
[attach]13228[/attach]楼主可以看下官方的说明
作者:
sonwendi
时间:
2011-11-3 14:17
本帖最后由 sonwendi 于 2011-11-3 14:20 编辑
回复
4#
henrys
!的话意思是LOCK等于0,(!LOCK)就一直是1,while(1){}就是一直循环。
我一直用超频90M的~
LS截的图太大了,刷了半天~
void MCU_PLL_Init(void) //XS锁相环设置
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR =0xc0 | 0x2C; // VCOFRQ[7:6];SYNDIV[5:0]
REFDV=0xc0 | 0x07; // REFFRQ[7:6];REFDIV[5:0] //fREF >12MHz// pllclock=2*osc*(1+SYNR)/(1+REFDV)=2*16*(1+44)/(1+7)=180MHz;
POSTDIV=0x00; // POSTDIV[4:0], fPLL= fVCO/(2xPOSTDIV)=90Mhz
_asm(nop);
_asm(nop);
_asm(nop);
_asm(nop);
while(!CRGFLG_LOCK); //when pll is steady ,then use it;
CLKSEL_PLLSEL=1; //engage PLL to system;
}
复制代码
作者:
568581185
时间:
2011-11-3 14:19
回复
4#
henrys
是有1才跳出循环哦呵呵
作者:
dahuiwang2009
时间:
2011-11-3 14:23
while(!(CRGFLG_LOCK==0));
while(CRGFLG_LOCK==1);
这个你试试!!
作者:
henrys
时间:
2011-11-3 14:25
回复
7#
568581185
我知道
CRGFLG_LOCK=0,
那么!CRGFLG_LOCK=0就是1嘛,谢谢哈~~
作者:
henrys
时间:
2011-11-3 14:29
回复
6#
sonwendi
谢谢美女~~~我赶紧去试试~~
作者:
henrys
时间:
2011-11-3 14:31
回复
8#
dahuiwang2009
谢谢~~我试试~~
作者:
568581185
时间:
2011-11-3 14:39
回复
11#
henrys
其实他是男的O(∩_∩)O哈哈~
楼主不要想错了
作者:
henrys
时间:
2011-11-3 15:19
回复
2#
sonwendi
我刚刚试过了,一定要
while(!(CRGFLG_LOCK==0));
CLKSEL_PLLSEL =1;
才可以呢.......
纠结
作者:
henrys
时间:
2011-11-3 15:27
回复
2#
sonwendi
而且还伴随着一些症状:舵机一直在抽搐,给单片机的2940超级烫...但是芯片一点都不烫...
作者:
henrys
时间:
2011-11-3 15:55
回复
2#
sonwendi
while(!CRGFLG_LOCK);始终停留在这一句
也就是说
CRGFLG_LOCK一直都是0???
所以跳不出这个循环???
不会是硬件问题吧??
晕啊~~自己做 的系统板出问题了
作者:
wgl404
时间:
2011-11-3 16:43
回复
2#
sonwendi
我説怎么看lz的程序不太习惯呢!
作者:
henrys
时间:
2011-11-3 18:39
我把所有线拔了,就不烫了,但是还是老问题~~那句话就是过不了...
作者:
sonwendi
时间:
2011-11-3 18:41
回复
12#
568581185
被你发现了……
作者:
sonwendi
时间:
2011-11-3 18:42
回复
15#
henrys
那试一试降频呢?如果频率太高可能会有问题,或者振荡电路不稳定?
作者:
568581185
时间:
2011-11-4 09:10
回复
18#
sonwendi
呵呵论坛上女生很少吧
哈哈
作者:
sonwendi
时间:
2011-11-5 13:03
回复
20#
568581185
这倒是,哈哈
作者:
txgc
时间:
2012-6-28 01:41
SYNR =0xc0 | 0x2C; // VCOFRQ[7:6];SYNDIV[5:0]
我的程序运行到这一句会跳出,实在不知道怎么回事????
作者:
Quagliarella
时间:
2012-8-4 09:44
我的遇到了你的问题
程序过不去那一句了
请问你是怎么解决的
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2