原创
MPLAB C30 PIC24单片机的PLL
PIC24单片机的PLL功能很灵活,能很容易获得需要的频率。以下代码在PIC24HJ128GP510以及PIC24HJ128GP610下通过。
// 此代码假设要把6M外部晶振倍频到80MHz
// 先选择内部晶振
_FOSCSEL(FNOSC_FRC);
// 使能时钟切换功能,设定外部晶振XT模式
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);
void ClockPLL(void);
int main(void)
{
ClockPLL();
while(1);
}
void ClockPLL(void)
{
// 设定PLL
// Fosc = Fin* M / N1 / N2
// 为了得到80MHz
// 80 = 6 * 160 / 2 / 6
// M = 158; N1 = 4; N2 = 0
PLLFBD = 158;// M=X+2
CLKDIVbits.PLLPOST = 0;// N2=2,4, ,8
CLKDIVbits.PLLPRE = 4;// N1=X+2
// 切换到带PLL的外部晶振
__builtin_write_OSCCONH(0x03);
__builtin_write_OSCCONL(0x01);
// 等待切换生效
while (OSCCONbits.COSC!=0b011);
// 等待PLL锁定
while(OSCCONbits.LOCK!=1) {};
}
关闭
站长推荐
/3
用户445460 2013-9-4 21:34
用户377235 2013-2-25 16:44
345002072_353389109 2012-10-24 10:00