本帖最后由 taobaofarmer 于 2020-9-12 15:35 编辑
官方给提供的例程,在Sample_Code->RegBased->Fsys_MoidfyHIRC->FSYS_MHIRC.C->MODIFY_HIRC(HIRC_24);函数里,该函数我给整理了下,只保留调整主频位24M的功能,代码如下:
void Make_HIRC_24MHz(void)
{
u8 idata hirc_map0, hirc_map1;
//Check if power on reset, modify HIRC
SFRS = 0; //?1处
IAPAL = 0x38;
set_IAPEN;
{
IAPAH = 0x00;
IAPCN = READ_UID; //?2处
set_IAPGO;
hirc_map0 = IAPFD;
IAPAL++;
set_IAPGO;
hirc_map1 = IAPFD;
}
clr_IAPEN;
TA = 0xAA;
TA = 0x55;
{
RCTRIM0 = hirc_map0;
}
TA = 0xAA;
TA = 0x55;
{
RCTRIM1 = hirc_map1;
}
//禁止低功耗模式
PCON &= CLR_BIT4;
}
首先说明这个函数在MS51FB9AE上执行是失败的,大体过程我知道,是从系统默认的配置里读出24M主频的高低字节配置信息,然后写入RCTRIM0和RCTRIM1里,但是在?2处,为何IAPCN的指令是READ_UID呢?这个指令不是读芯片内部96位unique id吗?
另外?1处 SFRS = 0;啥意思,难道是翻到SFR页0的意思吗?如果这是这样的话,SFRS寄存器是有TA保护的,单单SFRS = 0;是不行的呀?
|