智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6419|回复: 22
打印 上一主题 下一主题

单片机程序的问题...估计没有人能解答...

  [复制链接]

14

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
623
威望
389
贡献
224
兑换币
13
注册时间
2011-7-31
在线时间
5 小时
跳转到指定楼层
1#
发表于 2011-11-3 14:00:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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));
所有口就有反应了...
但是这样会造成系统不稳定的...
求解答~~~
此帖沉下去的几率很高啊!!!!

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
2#
发表于 2011-11-3 14:06:35 | 只看该作者
为啥不用 while(!CRGFLG_LOCK);  呢?
回复 支持 反对

使用道具 举报

30

主题

838

帖子

0

精华

常驻嘉宾

mrguang.taobao.com

Rank: 8Rank: 8

积分
3047

资源大师奖章论坛元老奖章优秀会员奖章活跃会员奖章热心会员奖章在线王奖章

QQ
威望
1840
贡献
289
兑换币
15
注册时间
2010-12-3
在线时间
459 小时
3#
发表于 2011-11-3 14:10:55 | 只看该作者
  1. while(!(CRGFLG_LOCK==1));
复制代码
楼主,如果你的程序一直停在这,就表示你单片机的CRGFLG_LOCK一直是为0的
检测不到1,所以程序一直在这步空跳。。。。
不知道是你的硬件出了问题还是咋的
我们原来超过80M
回复 支持 反对

使用道具 举报

14

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
623
威望
389
贡献
224
兑换币
13
注册时间
2011-7-31
在线时间
5 小时
4#
 楼主| 发表于 2011-11-3 14:12:54 | 只看该作者
回复 2# sonwendi


    我是自己做的系统板,程序可以烤进去的...
     用while(!CRGFLG_LOCK);的话
   是不是就是CRGFLG_LOCK=0的时候就会跳出这个循环了??
这样超频还有效吗??
回复 支持 反对

使用道具 举报

30

主题

838

帖子

0

精华

常驻嘉宾

mrguang.taobao.com

Rank: 8Rank: 8

积分
3047

资源大师奖章论坛元老奖章优秀会员奖章活跃会员奖章热心会员奖章在线王奖章

QQ
威望
1840
贡献
289
兑换币
15
注册时间
2010-12-3
在线时间
459 小时
5#
发表于 2011-11-3 14:16:43 | 只看该作者
楼主可以看下官方的说明

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

44

主题

1485

帖子

0

精华

版主

早川队队长

Rank: 9Rank: 9Rank: 9

积分
20210

资源大师奖章论坛骨干奖章推广达人奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章优秀版主奖章

QQ
威望
5864
贡献
12698
兑换币
630
注册时间
2009-8-18
在线时间
824 小时
6#
发表于 2011-11-3 14:17:24 | 只看该作者
本帖最后由 sonwendi 于 2011-11-3 14:20 编辑

回复 4# henrys


    !的话意思是LOCK等于0,(!LOCK)就一直是1,while(1){}就是一直循环。
    我一直用超频90M的~
    LS截的图太大了,刷了半天~

  
  1. void MCU_PLL_Init(void) //XS锁相环设置
  2. {

  3. CLKSEL=0X00; //disengage PLL to system

  4. PLLCTL_PLLON=1; //turn on PLL
  5. SYNR =0xc0 | 0x2C; // VCOFRQ[7:6];SYNDIV[5:0]
  6. 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;
  7. POSTDIV=0x00; // POSTDIV[4:0], fPLL= fVCO/(2xPOSTDIV)=90Mhz
  8. _asm(nop);
  9. _asm(nop);
  10. _asm(nop);
  11. _asm(nop);
  12. while(!CRGFLG_LOCK); //when pll is steady ,then use it;

  13. CLKSEL_PLLSEL=1; //engage PLL to system;
  14. }
复制代码
回复 支持 反对

使用道具 举报

30

主题

838

帖子

0

精华

常驻嘉宾

mrguang.taobao.com

Rank: 8Rank: 8

积分
3047

资源大师奖章论坛元老奖章优秀会员奖章活跃会员奖章热心会员奖章在线王奖章

QQ
威望
1840
贡献
289
兑换币
15
注册时间
2010-12-3
在线时间
459 小时
7#
发表于 2011-11-3 14:19:16 | 只看该作者
回复 4# henrys


   是有1才跳出循环哦呵呵
回复 支持 反对

使用道具 举报

2

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
940
QQ
威望
438
贡献
440
兑换币
2
注册时间
2010-12-6
在线时间
31 小时
8#
发表于 2011-11-3 14:23:14 | 只看该作者
while(!(CRGFLG_LOCK==0));
while(CRGFLG_LOCK==1);
这个你试试!!
回复 支持 反对

使用道具 举报

14

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
623
威望
389
贡献
224
兑换币
13
注册时间
2011-7-31
在线时间
5 小时
9#
 楼主| 发表于 2011-11-3 14:25:35 | 只看该作者
回复 7# 568581185
我知道
CRGFLG_LOCK=0,
那么!CRGFLG_LOCK=0就是1嘛,谢谢哈~~
回复 支持 反对

使用道具 举报

14

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
623
威望
389
贡献
224
兑换币
13
注册时间
2011-7-31
在线时间
5 小时
10#
 楼主| 发表于 2011-11-3 14:29:58 | 只看该作者
回复 6# sonwendi


    谢谢美女~~~我赶紧去试试~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 18:41 , Processed in 0.245391 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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