中级会员
- 积分
- 253
- 威望
- 190
- 贡献
- 51
- 兑换币
- 0
- 注册时间
- 2011-1-23
- 在线时间
- 6 小时
|
我的代码如下,但是就是不稳定,没跑上几圈就降回去了。郁闷啊~~~请求高手指教!!!- void init_PLL(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
- {
- CLKSEL=0x00; // disengage PLL to system
- PLLCTL_PLLON=1; // turn on PLL
- SYNR=0xc0|0x04; // VCOFRQ[7:6];SYNDIV[5:0]
- // fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)
- // fPLL= fVCO/(2 × POSTDIV)
- // fBUS= fPLL/2
- // VCOCLK Frequency Ranges VCOFRQ[7:6]
- // 32MHz <= fVCO <= 48MHz 00
- // 48MHz < fVCO <= 80MHz 01
- // Reserved 10
- // 80MHz < fVCO <= 120MHz 11
- REFDV=0x80|0x01; // REFFRQ[7:6];REFDIV[5:0]
- // fREF=fOSC/(REFDIV + 1)
- // REFCLK Frequency Ranges REFFRQ[7:6]
- // 1MHz <= fREF <= 2MHz 00
- // 2MHz < fREF <= 6MHz 01
- // 6MHz < fREF <= 12MHz 10
- // fREF > 12MHz 11
- // pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
- POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV)
- // If POSTDIV = $00 then fPLL is identical to fVCO (divide by one).
- // BUS CLOCK=40M
- _asm(nop);
- _asm(nop);
- while(!(CRGFLG_LOCK==1));//when pll is steady ,then use it;
- CLKSEL=0x80; //engage PLL to system
- }
复制代码 |
|