关于 BCSCTL1 = CALBC1_12MHZ;DCOCTL = CALDCO_12MHZ; 的疑问

时间:2023-03-09 08:57:40
关于      BCSCTL1 = CALBC1_12MHZ;DCOCTL  = CALDCO_12MHZ;       的疑问
 /************************************************************
* Calibration Data in Info Mem
************************************************************/ #ifndef __DisableCalData #define CALDCO_16MHZ_ (0x10F8u) /* DCOCTL Calibration Data for 16MHz */
READ_ONLY DEFC( CALDCO_16MHZ , CALDCO_16MHZ_)
#define CALBC1_16MHZ_ (0x10F9u) /* BCSCTL1 Calibration Data for 16MHz */
READ_ONLY DEFC( CALBC1_16MHZ , CALBC1_16MHZ_)
#define CALDCO_12MHZ_ (0x10FAu) /* DCOCTL Calibration Data for 12MHz */
READ_ONLY DEFC( CALDCO_12MHZ , CALDCO_12MHZ_)
#define CALBC1_12MHZ_ (0x10FBu) /* BCSCTL1 Calibration Data for 12MHz */
READ_ONLY DEFC( CALBC1_12MHZ , CALBC1_12MHZ_)
#define CALDCO_8MHZ_ (0x10FCu) /* DCOCTL Calibration Data for 8MHz */
READ_ONLY DEFC( CALDCO_8MHZ , CALDCO_8MHZ_)
#define CALBC1_8MHZ_ (0x10FDu) /* BCSCTL1 Calibration Data for 8MHz */
READ_ONLY DEFC( CALBC1_8MHZ , CALBC1_8MHZ_)
#define CALDCO_1MHZ_ (0x10FEu) /* DCOCTL Calibration Data for 1MHz */
READ_ONLY DEFC( CALDCO_1MHZ , CALDCO_1MHZ_)
#define CALBC1_1MHZ_ (0x10FFu) /* BCSCTL1 Calibration Data for 1MHz */
READ_ONLY DEFC( CALBC1_1MHZ , CALBC1_1MHZ_) #endif /* #ifndef __DisableCalData */
SFR_8BIT(CALDCO_16MHZ);对使用宏定义的地方进行字符展开就是:extern volatile unsigned char CALDCO_16MHZ;
CALBC1_1MHZ and CALDCO_1MHZ are two bytes programmed in the flash at the factory which are a calibrated value as to the VCO (voltage controlled oscillator)
of the chip.  This means that when you load those two values into the respective registers, you are using a precalibrated setting to get appoximately 1MHz.
CALBC1_1MHZ and CALDCO_1MHZ是用来设置校准值的。TI已经把他放进flash中了。
头文件中有一行字:
/************************************************************
* Calibration Data in Info Mem
************************************************************/
他的意思就是:存储在flash中的校准数据,0x10FFu 这些都是他们的地址