使用 MPLAB X IDE作为开发环境
振荡器(时钟)切换步骤:
1.对 OSCCON 高字节执行解锁序列(解锁参数是固定的)
__builtin_write_OSCCONH(0x78);
__builtin_write_OSCCONH(0x9A);
2.将新的振荡器源写入NOSC<2:0>控制位
__builtin_write_OSCCONH(0x01); //依据振荡器控制寄存器(OSCCON)高位描述,将振荡器选择为带PLL的快速RC振荡器
3.对 OSCCON 低字节执行解锁序列(解锁参数是固定的)
__builtin_write_OSCCONL(0x46);
__builtin_write_OSCCONL(0x57);
4.开启振荡器切换使能,将 OSWEN 位置1
__builtin_write_OSCCONL(0x01); //依据振荡器控制寄存器(OSCCON)低位描述,开启振荡器切换使能,OSWEN 位置1
5.等待切换完成
while(OSCCONbits.COSC != 0b001); //读振荡器控制寄存器的NOSC位,等待振荡器切换成功
while(OSCCONbits.LOCK != 1); //读振荡器控制寄存器的LOCK位,等待PLL锁定
//到这里就代表振荡器切换成功
说明__builtin_write_OSCCONH和__builtin_write_OSCCONL是 MPLAB C 编译器提供针对OSCCON寄存器操作的内建 C 语言函数
OSCCON寄存器位操作说明如下,可直接查看dsPIC33FJ16GS502芯片数据手册