只要我们调用只为时钟设置外部电阻器的 InitClock_g 函数、OFIFG 位就会被置位、前提是我们在之后将其清零。
/*-------------------------------------- *
/*
时钟初始化。
*
空 InitClock_g(空)
{
CSCTL0 |= DCOR; /*用于计时的外部电阻器*/
}
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
只要我们调用只为时钟设置外部电阻器的 InitClock_g 函数、OFIFG 位就会被置位、前提是我们在之后将其清零。
/*-------------------------------------- *
/*
时钟初始化。
*
空 InitClock_g(空)
{
CSCTL0 |= DCOR; /*用于计时的外部电阻器*/
}
Ashish、您好!
查看 《MSP430i2xx 系列用户指南》第126页的用例3、您使用的外部电阻器值是多少?
尊敬的 Dennis:
以下是启动时调用的低级 init 函数(由 TI 提供)。 如果 BORIFG 位被置位、它将载入 TLV 表中的值。 这是否正常?
#ifdef __TI_Compiler_version__
int _system_pre_init (void)
#Elif defined (_IAR_systems_icc_)
int __low_level_init (void)
其他
错误编译器不受支持!
#endif
{
unsigned int Temp;
unsigned long * jtagPwd =(unsigned long *) JTAG_DIS_PWD1;
/*馈送看门狗计时器*/
WDTCTL = WDTPW | WDTCNTCL;
/*检查 JTAG 密码位置并在密码不匹配时禁用 JTAG。
*否则 JTAG 将在复位后的第64个周期中启用。
*
if ((* jtagPwd!= 0x00000000u)&&(* jtagPwd!= 0xFFFFFFU))
{
/*禁用 JTAG */
SYSJTAGDIS = JTAGDISKEY;
}
/*校准部分
*检查 IFG1中的 BORIFG 标志。 如果这是 BORIFG、则执行校准。
*否则跳过校准
*
temp =(IFG1 &(unsigned int) BORIFG);
if (Temp!= 0U)
{
/*对62字节的 TLV 数据执行二进制补码校验和*/
unsigned int 校验和= 0U;
unsigned char * TLV_address_for_parse =(unsigned char *) TLV_start);
unsigned int * TLV_address_for_CHECKSUM =(unsigned int *) TLV_START + 1);
tUI16 StartAdd = TLV_START + 1U;
tUI16 EndAddr = TLV_END;
tUI16 Addr = StartAdd;
操作
{
校验和^=* TLV_ADDRESS_for_CHECKSUM_+;
地址++;
} while (Addr <= EndAddr);
校验和^= 0xFFFFFFU;
校验和++;
/*如果校验和不正确、请转至 LPM4 */
if (*((unsigned int *) TLV_start)!=校验和)
{
/*如果校验和失败,则加载我们自己的值*/
/*校准值 */
CSIRFCAL = 0x80u;
CSIRTCAL = 0xC0u;
CSRFCAL = 0x72u;
CACERTTM = 0x40u;
SD24TRIM = 0x0Cu;
REFCAL0 = 0x3FU;
REFCAL1 = 0x00u;
/* DiogReg.InfoCallibFlag = 0x0001u;*/
/*SetBit_g (&DiogReg。InfoCallibFlag,0x01u);*/
}
其他
{
/*检查总和是否匹配,现在设置校准值*/
/*校准 REF */
REFCAL1 =*(TLV_ADDRESS_for_parse + TLV_CAL_REFCAL1);
REFCAL0 =*(TLV_ADDRESS_for_parse + TLV_CAL_REFCAL0);
/*校准 DCO */
CSIRFCAL =*(TLV_ADDRESS_for_parse + TLV_CAL_CSIRFCAL);
CSIRTCAL =*(TLV_ADDRESS_for_parse + TLV_CAL_CSIRTCAL);
CSRFCAL =*(TLV_ADDRESS_for_parse + TLV_CAL_CSRFCAL);
CSRTCAL =*(TLV_ADDRESS_for_PARSE + TLV_CAL_CSRTCAL);
/*校准 SD24 */
SD24TRIM =*(TLV_ADDRESS_for_parse + TLV_CAL_SD24TRIM);
/*DiogRe.InfoCallibFlag = 0x0000u;*/
/*ClearBit_g (&DiogReg。InfoCallibFlag,0x01u);*/
}
#pragma diag_suppress = Pm128 /* MISRA 10.1:*
/*清除 BORIFG */
IFG1 &=(tUI8)~(BORIFG);
}
/*馈送看门狗计时器*/
WDTCTL = WDTPW | WDTCNTCL;
/*返回值:
* 1 -执行数据段初始化。
* 0 -跳过数据段初始化。
*
返回1;
}
此致、
Ashish/Rakesh