[求助] 求助PIC24F DSWDT寄存器设置方法

貌然神伤   2015-12-22 14:26 楼主
这个是头文件里对寄存器设置的描述
extern __attribute__((space(prog))) int _FDS;
#define _FDS(x) __attribute__((section("__FDS.sec"),space(prog))) int _FDS = (x);

/*
** Only one invocation of FDS 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 FDS.
** Multiple options may be combined, as shown:
**
** _FDS( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
**   Deep Sleep Watchdog Timer:
**     DSWDTEN_OFF          Disabled
**     DSWDTEN_ON           Enabled
**
**   Deep Sleep BOR:
**     DSBOREN_OFF          Disabled
**     DSBOREN_ON           Enabled
**
**   RTCC Reference Oscillator Select:
**     RTCOSC_LPRC          Low Power RC Oscillator (LPRC)
**     RTCOSC_SOSC          Secondary Oscillator (SOSC)
**
**   Deep Sleep Watchdog Oscillator Clock Select:
**     DSWDTOSC_LPRC        Secondary Oscillator (SOSC)
**     DSWDTOSC_SOSC        Low Power RC Oscillator (LPRC)
**
**   Deep Sleep Watchdog Postscale Select Bits:
**     DSWDTPS_DSWDTPS0     1:2 (2.1 ms)
**     DSWDTPS_DSWDTPS1     1:8 (8.3 ms)
**     DSWDTPS_DSWDTPS2     1:32 (33 ms)
**     DSWDTPS_DSWDTPS3     1:128 (132 ms)
**     DSWDTPS_DSWDTPS4     1:512 (528 ms)
**     DSWDTPS_DSWDTPS5     1:2048 (2.1 Seconds)
**     DSWDTPS_DSWDTPS6     1:8192 (8.5 Seconds)
**     DSWDTPS_DSWDTPS7     1:32,768 (34 Seconds)
**     DSWDTPS_DSWDTPS8     1:131,072 (135 Seconds)
**     DSWDTPS_DSWDTPS9     1:524,288 (9 Minutes)
**     DSWDTPS_DSWDTPSA     1:2,097,152 (36 Minutes)
**     DSWDTPS_DSWDTPSB     1:8,388,608 (2.4 Hours)
**     DSWDTPS_DSWDTPSC     1:33,554,432 (9.6 Hours)
**     DSWDTPS_DSWDTPSD     1:134,217,728 (38.5 Hours)
**     DSWDTPS_DSWDTPSE     1:536,870,912 (6.4 Days)
**     DSWDTPS_DSWDTPSF     1:2,147,483,648 (25.7 Days)
**
*/

#define DSWDTEN_OFF          0xFF7F
#define DSWDTEN_ON           0xFFFF

#define DSBOREN_OFF          0xFFBF
#define DSBOREN_ON           0xFFFF

#define RTCOSC_LPRC          0xFFDF
#define RTCOSC_SOSC          0xFFFF

#define DSWDTOSC_LPRC        0xFFEF
#define DSWDTOSC_SOSC        0xFFFF

#define DSWDTPS_DSWDTPS0     0xFFF0
#define DSWDTPS_DSWDTPS1     0xFFF1
#define DSWDTPS_DSWDTPS2     0xFFF2
#define DSWDTPS_DSWDTPS3     0xFFF3
#define DSWDTPS_DSWDTPS4     0xFFF4
#define DSWDTPS_DSWDTPS5     0xFFF5
#define DSWDTPS_DSWDTPS6     0xFFF6
#define DSWDTPS_DSWDTPS7     0xFFF7
#define DSWDTPS_DSWDTPS8     0xFFF8
#define DSWDTPS_DSWDTPS9     0xFFF9
#define DSWDTPS_DSWDTPSA     0xFFFA
#define DSWDTPS_DSWDTPSB     0xFFFB
#define DSWDTPS_DSWDTPSC     0xFFFC
#define DSWDTPS_DSWDTPSD     0xFFFD
#define DSWDTPS_DSWDTPSE     0xFFFE
#define DSWDTPS_DSWDTPSF     0xFFFF

回复评论 (4)

按照描述
_FDS(DSWDTEN_ON&DSBOREN_OFF&RTCOSC_LPRC&DSWDTOSC_LPRC&DSWDTPS_DSWDTPS5);
编译过不了
报错如下
main.c:57: error: section attribute cannot be specified for local variables
点赞  2015-12-22 14:27
刚才这个是把语句放到MAIN函数内部出现的

然后把那句话放到函数外的时候编译无错 但是 烧录进单片机没有复位的反应
点赞  2015-12-22 14:29
请知道的大手们赐教
点赞  2015-12-22 14:30
首先,PIC的配置位应该是在MAIN函数外部
另外,一般是在MAIN.C文件的包含文件后第一时间设定
其次,配置位语句本身就有关键字:__CONFIG(前面是两个_)
点赞  2016-1-18 18:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复