我程序烧录进去之后没有任何反映,可能是外部硬件晶振没起振的原因。另外,使用内部快速RC振荡程序是可以正常运行的。
可以请各位看看在下的时钟配置程序是否正确吗?
以下是配置位图以及主函数的寄存器配置:
int main(int argc, char** argv)
{
//产生Fosc = 120MHz
CLKDIVbits.PLLPRE = 0; //N1 = 2
PLLFBDbits.PLLDIV = 58; //M = 60
CLKDIVbits.PLLPOST = 0; //N2 = 2 8 * (60 / (2 + 2)) = 120M
OSCCONbits.NOSC = 0b11;
OSCCONbits.CLKLOCK = 0b0;
// Wait for Clock switch to occur
while(OSCCONbits.COSC != 0b011) /* Wait for new Oscillator to become XT with PLL */
{
}
while(OSCCONbits.LOCK != 1) /* Wait for Pll to Lock */
{
}
//Tim3_Init();
//timer1_init();
LATF = 0x0000; // B端口清零
TRISF = 0x0000; // B端口设为输入, 0: out, 1: in
PORTF = 0x0000;
while(1)
{
LATF=(PORTF ^ 0xff);
delay_ms(500);
}
return (EXIT_SUCCESS);
}
|
@zxq1131 :找到了内置函数进行寄存器修改,但还是没有切换成功,请再指导一下。新的代码在楼下。
直接对OSCCON操作应该是不成功的,要先解锁。你这个应该是对OSCCON没有写成功