问答

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

21ic问答首页 - GD32F103VET6移植STM的API,引脚操作比GD的API慢

GD ST API 移植 gd32F103 STM

GD32F103VET6移植STM的API,引脚操作比GD的API慢

BHFCHARGE2022-03-15
按要求修改了flash启动时间,时钟频率为72MHZ,分频方式也是按照GD库的分频强制分的72MHZ,但就是GUI刷屏显示明显慢,但使用GD的API则正常。对比过RCC配置寄存器及引脚配置寄存器,配置的内容是一样的
回答 +关注 15
1221人浏览 1人回答问题 分享 举报
1 个回答
  • void RCC_Config(void)
    {   
            ErrorStatus HSEStartUpStatus;
            /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/   
            /* RCC system reset(for debug purpose) */
            RCC_DeInit();
           
            /* Enable HSE */
            RCC_HSEConfig(RCC_HSE_ON);
           
            /* Wait till HSE is ready */
            HSEStartUpStatus = RCC_WaitForHSEStartUp();
           
            if(HSEStartUpStatus == SUCCESS)
            {
                    /* Enable Prefetch Buffer */
                    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
                   
                    /* Flash 2 wait state */
                    FLASH_SetLatency(FLASH_Latency_2);
                   
                    /* HCLK = SYSCLK */
                    RCC_HCLKConfig(RCC_SYSCLK_Div1);
                   
                    /* PCLK2 = HCLK */
                    RCC_PCLK2Config(RCC_HCLK_Div1);
                   
                    /* PCLK1 = HCLK/4 */
                    RCC_PCLK1Config(RCC_HCLK_Div2);
                   
                    /* PLLCLK = 8MHz * 9 = 72 MHz */
                    RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_9);
                   
                    /* Enable PLL */
                    RCC_PLLCmd(ENABLE);
                   
                    /* Wait till PLL is ready */
                    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
                    {
                    }
                    /* Select PLL as system clock source */
                    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
                   
                    /* Wait till PLL is used as system clock source */
                    while(RCC_GetSYSCLKSource() != 0x08)
                    {
                    }
            }
    }

    void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul)
    {
      u32 tmpreg = 0;

      /* Check the parameters */
      assert_param(IS_RCC_PLL_SOURCE(RCC_PLLSource));
      assert_param(IS_RCC_PLL_MUL(RCC_PLLMul));

      tmpreg = RCC->CFGR;

      /* Clear PLLSRC, PLLXTPRE and PLLMUL[3:0] bits */
      tmpreg &= CFGR_PLL_Mask;

      /* Set the PLL configuration bits */
      tmpreg |= RCC_PLLSource |  0X08070000;//RCC_PLLMul;// 0X08070000;//;

      /* Store the new value */
      RCC->CFGR = tmpreg;
    }



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