智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3486|回复: 1
打印 上一主题 下一主题

PLL_Init和SetBusCLK函数都是用来干嘛的??

[复制链接]

14

主题

39

帖子

0

精华

高级会员

Rank: 4

积分
613
威望
384
贡献
139
兑换币
2
注册时间
2011-11-28
在线时间
45 小时
跳转到指定楼层
1#
发表于 2012-4-18 15:26:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
void PLL_Init(void)   //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                 
  //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;            
  //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;
}
==========================================
void SetBusCLK_40M(void)
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   //turn on PLL
    SYNR =0xc0 | 0x04;                        
    REFDV=0xc0 | 0x01;  
    POSTDIV=0x00;       //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
    _asm(nop);          //BUS CLOCK=40M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system;  
}

       在一本电机控制的书里看到“锁相环测速方法”,锁相环是不是只是提高它自己的频率,与主程序频率无关?
还有就是线面的这个程序是不是用来提高主程序频率的?也就是说代码每执行一行需要多少时间就是靠它来决定的?

0

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
579
威望
309
贡献
116
兑换币
2
注册时间
2012-3-1
在线时间
77 小时
毕业学校
怀集第一中学
2#
发表于 2012-5-5 12:47:01 | 只看该作者
锁相环时钟=2*16*(2+1)/(1+1)=48MHz
这里是这样的吗???
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 21:43 , Processed in 0.100855 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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