打印

GD32 108MHZ配置成功,哈哈

[复制链接]
2611|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunmeat|  楼主 | 2014-9-25 21:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
网友的例子是在3.3版本的库下修改的,我用的是最新的3.5的版本,担心有什么不同的地方,手动修改吧。

沙发
sunmeat|  楼主 | 2014-9-25 21:51 | 只看该作者
首先,由于system_stm32f10x.c是锁着呢,要修改需要解锁,最好先备份,万一修改失败咋办。

由上图黄色的部分看出,是只读的,需要解锁

使用特权

评论回复
板凳
sunmeat|  楼主 | 2014-9-25 21:53 | 只看该作者
选中system_stm32f10x.c这个文件,右键属性,把只读前面的对号去掉

使用特权

评论回复
地板
sunmeat|  楼主 | 2014-9-25 21:53 | 只看该作者

然后就可以修改了。

使用特权

评论回复
5
sunmeat|  楼主 | 2014-9-25 21:57 | 只看该作者
在115行后面添加#define SYSCLK_FREQ_108MHz 108000000,添加后如下图

使用特权

评论回复
6
sunmeat|  楼主 | 2014-9-25 21:59 | 只看该作者
在163行后面添加
#elif defined SYSCLK_FREQ_108MHz
  uint32_t SystemCoreClock         = SYSCLK_FREQ_108MHz;        /*!< System Clock Frequency (Core Clock) */
添加后如下图所示

使用特权

评论回复
7
sunmeat|  楼主 | 2014-9-25 22:07 | 只看该作者
在192行后面增加
#elif defined SYSCLK_FREQ_108MHz
  static void SetSysClockTo108(void);
增加后如下

使用特权

评论回复
8
sunmeat|  楼主 | 2014-9-26 10:58 | 只看该作者
在433行增加,
#elif defined SYSCLK_FREQ_108MHz
  SetSysClockTo108();
增加后如下

使用特权

评论回复
9
sunmeat|  楼主 | 2014-9-26 11:01 | 只看该作者
在1082行后增加如下代码
#elif defined SYSCLK_FREQ_108MHz
static void SetSysClockTo108(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;

  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/   
  /* Enable HSE */   
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  }

  if (HSEStatus == (uint32_t)0x01)
  {

    /* HCLK = SYSCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
     
    /* PCLK2 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
   
    /* PCLK1 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
  
    /*  PLL configuration: PLLCLK = HSE/2* (15+12) = 108 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(0x08000000 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL12);

    /* Enable PLL */
    RCC->CR |= RCC_CR_PLLON;

    /* Wait till PLL is ready */
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }
   
    /* Select PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

    /* Wait till PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
    {
    }
  }
  else
  { /* If HSE fails to start-up, the application will have wrong clock
         configuration. User can add here some code to deal with this error */
  }
}

#endif
增加后如下

使用特权

评论回复
10
sunmeat|  楼主 | 2014-9-26 11:02 | 只看该作者
然后再把system_stm32f10x.c上锁,加写保护

使用特权

评论回复
11
olayman| | 2014-9-26 11:13 | 只看该作者
有意思,,回去试试GD32的片子。

使用特权

评论回复
12
sunmeat|  楼主 | 2014-9-28 10:36 | 只看该作者
olayman 发表于 2014-9-26 11:13
有意思,,回去试试GD32的片子。

这个频率确实比stm32有优势

使用特权

评论回复
13
55854234| | 2014-9-28 10:41 | 只看该作者
原则上是可行,不知道实际的运行效果和稳定性咋样?

使用特权

评论回复
14
zitral| | 2014-9-29 09:32 | 只看该作者
LZ忘说了你用的晶振频率是多少?

使用特权

评论回复
15
锐鑫同创| | 2014-10-14 13:00 | 只看该作者
GD的108M运行的很稳定啊,这个都是在GD测试范围内的一个标准来的

使用特权

评论回复
16
zitral| | 2014-10-20 10:49 | 只看该作者
MicroLCD 发表于 2014-10-17 11:28
请问楼主,static void SetSysClockTo108(void) 这个函数,达到108M, 那此时配合的-----GD32F外置的晶振还 ...

这里说的就是默认的8MHZ,如果用了别的值,使用库函数配置系统时钟(库函数是按默认的8MHZ配置的)的时候就要注意了!

使用特权

评论回复
17
sunmeat|  楼主 | 2014-10-27 08:27 | 只看该作者
MicroLCD 发表于 2014-10-17 11:28
请问楼主,static void SetSysClockTo108(void) 这个函数,达到108M, 那此时配合的-----GD32F外置的晶振还 ...

PLL configuration: PLLCLK = HSE/2* (15+12) = 108 MHz */
默认就是以8MHZ来配置的

使用特权

评论回复
18
sunmeat|  楼主 | 2014-10-27 08:27 | 只看该作者
zitral 发表于 2014-9-29 09:32
LZ忘说了你用的晶振频率是多少?

:lol8MHZ

使用特权

评论回复
19
sunmeat|  楼主 | 2014-10-27 08:27 | 只看该作者
锐鑫同创 发表于 2014-10-14 13:00
GD的108M运行的很稳定啊,这个都是在GD测试范围内的一个标准来的

我试了试,确实很稳定

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝