PIC单片机CONFIG说明

2019-04-15 11:39发布

        CONFIG又称为熔丝位,可以通过配置熔丝位来配置单片机内部的功能,比如晶振时钟、看门狗、JTAG、掉电检测与代码保护等,如果对这些设置不了解的话,建议直接复制粘贴。
       在PIC单片机中,我们既可以通过在代码中添加CONFIG代码来设置熔丝位,也可以通过在MPLAB IDE集成开发环境中通过界面进行配置。
       界面配置方法:
       点击Configure>Select Device选择相应的器件,这里我们选择PIC24FJ64GB004,如图1、图2所示: 1.jpg 图1 2.jpg      图2        选择好器件后,点击Configure>Configuration Bits,进入图3界面,取消掉Configration Bits set in code,这样就可以通过界面进行CONFIG的配置,如图3所示。 3.jpg 图3        从图3我们还可以看到PIC24FJ64GB004的CONFIG存放在0xABF8 0xABFE的地址上,这个地址也与GLD文件中的CONFIG地址相对应。每个设置选项的不同对应的Value值也是不同的。至于图中每个设置选项的具体含义请参考下面在代码中配置。
       代码中的配置方法:
       如果想在代码中配置,需要在图3界面勾选Configration Bits set in code,然后在代码中添加CONFIG代码,如下:
              #include 
              _CONFIG1(WDTPS_PS1 & FWPSA_PR32 & WINDIS_OFF & FWDTEN_OFF & ICS_PGx1 & GWRP_OFF & GCP_OFF & JTAGEN_OFF)
              _CONFIG2(POSCMOD_HS & I2C1SEL_PRI & IOL1WAY_OFF & OSCIOFNC_ON & FCKSM_CSDCMD & FNOSC_PRIPLL & PLL96MHZ_ON & PLLDIV_DIV2 & IESO_ON)
              _CONFIG3(WPFP_WPFP0 & SOSCSEL_SOSC & WUTSEL_LEG & WPDIS_WPDIS & WPCFG_WPCFGDIS & WPEND_WPENDMEM)
              _CONFIG4(DSWDTPS_DSWDTPS3 & DSWDTOSC_LPRC & RTCOSC_SOSC & DSBOREN_OFF & DSWDTEN_OFF)
       然后我们在C30编译器里找到p24fxxxx.h文件,文件位置:C:Program FilesMicrochipMPLAB C30supportPIC24Fh,通过p24fxxxx.h找到具体器件的头文件p24FJ64GB004.h,在此头文件里详细介绍了每个CONFIG配置的含义,以及具体的Value值。
       截取其中一段注释与代码如下:
/*
** Only one invocation of CONFIG1 should appear in a project,
** at the top of a C source file (outside of any function).
**
** The following constants can be used to set CONFIG1.
** Multiple options may be combined, as shown:
**
** _CONFIG1( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
**   Watchdog Timer Postscaler:
**     WDTPS_PS1            1:1
**     WDTPS_PS2            1:2
**     WDTPS_PS4            1:4
......
......
**   Watchdog Timer:
**     FWDTEN_OFF           Watchdog Timer is disabled
**     FWDTEN_ON            Watchdog Timer is enabled

......
......
#define WDTPS_PS1            0x7FF0
#define WDTPS_PS2            0x7FF1
#define WDTPS_PS4            0x7FF2
......
......
#define FWDTEN_OFF           0x7F7F
#define FWDTEN_ON            0x7FFF

       从注释可以看到WDTPS_PS1是关于看门狗时钟预分频设置,FWDTEN是关于看门狗时钟是否启动的设置,对比CONFIG代码可以发现看门狗时钟被设置为未分频同时未启动。
       剩下的CONFIG大家如果有兴趣,可以自行参考代码求证。p24fxxxx.h与p24FJ64GB004.h文件的下载地址:http://www.nwtel.cn/thread-114-1-1.html