标题: STC8G2K32S4单片机IRCBAND寄存器问题 [打印本页]

作者: lvben5d    时间: 2021-4-19 14:44
标题: STC8G2K32S4单片机IRCBAND寄存器问题
本帖最后由 lvben5d 于 2021-4-20 09:01 编辑

大家好,这颗MCU 是20年出样的,我用过K64S4 和目前正式出货的K32S4   这个MCU 我初始化遇到1个问题,如果屏蔽了这个IRCBAND寄存器 赋值,程序有时候 有无法上电复位并且 永远无法启动, 不知道大家是否遇到这个问题。
void CLK_init()      
{
        P_SW2   = 0x80;
        CKSEL   = 0x00;
        IRCBAND = 0x00;      //<---这个位置   按照官网说法  用户是不需要去操作这个寄存器的,  实际  我一旦不=0 程序就可能无法正常启动
         CLKDIV  = 0x02;      //2分频后 SYS运行主频为11.0592MHZ
        P_SW2   = 0x00;
        //IRTRIM++;
}


我给FAE打过电话,对方说出了几W片都没事,我也不知道你们是否遇到这个问题。

我现在发现 IRCBAND 在新版本的官网 库头文件里   STC8xxxx.H 已经不存在了,的确不需要去配置!!!  如果你遇到我描述的问题, 你试试在void CLK_init()   里    加一句  SUBF = 0x00;

作者: as21cxz    时间: 2021-4-19 15:38
频率在下载的时候可以选择,没必要去配置它,说不定你配置的频率与下载选择的频率设置有冲突呢?
作者: lvben5d    时间: 2021-4-19 15:50
as21cxz 发表于 2021-4-19 15:38
频率在下载的时候可以选择,没必要去配置它,说不定你配置的频率与下载选择的频率设置有冲突呢?

是的,大家都是下载的时候,系统自动帮我们配置好, 根本不需要动这个寄存器的。  但我的实际跟手册存在不符合的地方,不知道问题出在哪
作者: as21cxz    时间: 2021-4-19 16:28
本帖最后由 as21cxz 于 2021-4-19 16:37 编辑
lvben5d 发表于 2021-4-19 15:50
是的,大家都是下载的时候,系统自动帮我们配置好, 根本不需要动这个寄存器的。  但我的实际跟手册存在 ...

void CLK_init()      
{
        P_SW2   = 0x80;
        CKSEL   = 0x00;
  //    IRCBAND = 0x00; //不要这行语句
        CLKDIV  = 0x02;      // 这里是设置下载的频率然后2分频,比如下载设置24M,2分频就是12M,这样子的
        P_SW2   = 0x00;
    //   IRTRIM++;  //  可以通过这个++,--调整频率应该是这样。
}
作者: lvben5d    时间: 2021-4-20 08:07
as21cxz 发表于 2021-4-19 16:28
void CLK_init()      
{
        P_SW2   = 0x80;

是的  按照手册 正规合理方式 就是你这个建议。 我不知道是不是我硬件问题,按照你的这个编译,有时候烧录后,程序上电无法正常运行 启动。 我同事STC8H 也偶然会出现。  所以我才打电话给STC的技术支持  他说批量出,没有其他人遇到。我的是5V 转3.3V    51单片机的TX3跟另外一块主板串口通信(串口可以略微给芯片供电引起?)
作者: lvben5d    时间: 2021-4-20 08:44
原来 我以前错把 IRCBAND 寄存器地址 写为  sfr IRCBAND = 0x9d;     这个就是SBUF寄存器地址    我把SBUF当printf 打印用
char putchar(char c)
{
        uart1_txbyte(c);
        return c;
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1