问答

汇集网友智慧,解决技术难题

21ic问答首页 - GD32E23G6主时钟初期化失败问题

单片机 3g gd32e23 时钟 demo keil

GD32E23G6主时钟初期化失败问题

zewell2022-02-06

环境是KEIL5,使用的ST link
不管是DEMO程序还是自写程序,主时钟初期化一直失败,更换主频设定也不行。停在下记画圈的地方。
想问问可能是哪里的问题

回答 +关注 7
1597人浏览 3人回答问题 分享 举报
3 个回答
  • 你的硬件有外部晶振吗搜索
    复制

  • 定义一下内部晶振,或者自己接一下外部晶振吧。
  • 不好意思图传不上来,停在下记红色位置
    static void system_clock_8m_hxtal(void)
    {
        uint32_t timeout = 0U;
        uint32_t stab_flag = 0U;

        /* enable HXTAL */
        RCU_CTL0 |= RCU_CTL0_HXTALEN;

        /* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
        do{
            timeout++;
            stab_flag = (RCU_CTL0 & RCU_CTL0_HXTALSTB);
        }
        while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));   
        /* if fail */
        if(0U == (RCU_CTL0 & RCU_CTL0_HXTALSTB)){
            while(1){
            }
        }

        /* HXTAL is stable */
        /* AHB = SYSCLK */
        RCU_CFG0 |= RCU_AHB_CKSYS_DIV1;
        /* APB2 = AHB */
        RCU_CFG0 |= RCU_APB2_CKAHB_DIV1;
        /* APB1 = AHB */
        RCU_CFG0 |= RCU_APB1_CKAHB_DIV1;

        /* select HXTAL as system clock */
        RCU_CFG0 &= ~RCU_CFG0_SCS;
        RCU_CFG0 |= RCU_CKSYSSRC_HXTAL;

        /* wait until HXTAL is selected as system clock */
        while(0U == (RCU_CFG0 & RCU_SCSS_HXTAL)){
        }
    }

您需要登录后才可以回复 登录 | 注册