0、在MPLAB X IDE V6.15的Production-->Set Connfig...中可以配置时钟相关寄存器并自动生成代码。如下图
1、时钟源选择:8选一,不再赘述,参考PIC24HJ64GP502学习笔记(六)时钟配置
2、启动时钟原选择:ON为内部FRC启动转交用户配置,OFF为直接采用用户配置
3、FOSC配置FOSCMD
FOSCMD有三四个选项,分别为NONE,外部高速晶振HS(10-40M),外部中速晶振(4-10M),和外部时钟源EC,只有当上述1时钟源选择PRI的参数时,本参数才起作用。
4、FOSC配置OSCIOFNC
OSCIOFNC用于配置OSC引脚是作为IO使用还是作为时钟输出使用,大多数情况下选择ON,作为IO使用,具体依自己情况决定。
5、FOSC配置IOLIWAY
IOLIWAY仅在PIC24HJXXXGPX02/04中有效,PIC24HJXXXGPX06无此配置,此处用来定义是否可以多次更改IO的配置,建议设置为OFF即允许多次修改,以防止后期配置出现错误。
6、FOSC配置FCKSM
FCKSM用来控制是否允许更改时钟源和是否开启监控时钟(LPRC),有san个选项:CSDCMD即禁止切换时钟源并且禁止监控时钟运行,CSDCME即禁止切换时钟源但是允许监控时钟故障,CSECME即允许切换时钟源并且允许监控时钟故障,建议配置成CSECME,LPRC会在切换时钟故障时切换回内部时钟(带PLL的FRC)。
7、设置完以上参数后,点击“输出生成源代码”,IDE 会自动生产代码,如下所示:
8、将上述方框内代码复制粘贴至main.c最前端,如下图所示,编译测试正常。
9、有些例程中用如下代码配置时钟,如果您看完了上述介绍,应该可以看明白下述代码含义。
_FOSCSEL(FNOSC_FRC);
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT);
在p24HJ64GP502.h中有如下定义,请自行理解,不在赘述:
** _FOSCSEL( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
** Oscillator Mode:
** FNOSC_FRC Internal Fast RC (FRC)
** FNOSC_FRCPLL Internal Fast RC (FRC) w/ PLL
** FNOSC_PRI Primary Oscillator (XT, HS, EC)
** FNOSC_PRIPLL Primary Oscillator (XT, HS, EC) w/ PLL
** FNOSC_SOSC Secondary Oscillator (SOSC)
** FNOSC_LPRC Low Power RC Oscillator (LPRC)
** FNOSC_FRCDIV16 Internal Fast RC (FRC) divide by 16
** FNOSC_LPRCDIVN Internal Fast RC (FRC) with divide by N
**
** Internal External Switch Over Mode:
** IESO_OFF Start-up device with user-selected oscillator source
** IESO_ON Start-up device with FRC, then automatically switch to user-selected oscillator source when ready
** _FOSC( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
** Primary Oscillator Source:
** POSCMD_EC EC Oscillator Mode
** POSCMD_XT XT Oscillator Mode
** POSCMD_HS HS Oscillator Mode
** POSCMD_NONE Primary Oscillator Disabled
**
** OSC2 Pin Function:
** OSCIOFNC_ON OSC2 pin has digital I/O function
** OSCIOFNC_OFF OSC2 pin has clock out function
**
** Peripheral Pin Select Configuration:
** IOL1WAY_OFF Allow Multiple Re-configurations
** IOL1WAY_ON Allow Only One Re-configuration
**
** Clock Switching and Monitor:
** FCKSM_CSECME Both Clock Switching and Fail-Safe Clock Monitor are enabled
** FCKSM_CSECMD Clock switching is enabled, Fail-Safe Clock Monitor is disabled
** FCKSM_CSDCMD Both Clock Switching and Fail-Safe Clock Monitor are disabled