GD32 108MHZ配置成功,哈哈

[复制链接]
3253|18
 楼主| sunmeat 发表于 2014-9-25 21:46 | 显示全部楼层 |阅读模式
网友的例子是在3.3版本的库下修改的,我用的是最新的3.5的版本,担心有什么不同的地方,手动修改吧。

 楼主| sunmeat 发表于 2014-9-25 21:51 | 显示全部楼层
首先,由于system_stm32f10x.c是锁着呢,要修改需要解锁,最好先备份,万一修改失败咋办。
图像 621.png
由上图黄色的部分看出,是只读的,需要解锁
 楼主| sunmeat 发表于 2014-9-25 21:53 | 显示全部楼层
选中system_stm32f10x.c这个文件,右键属性,把只读前面的对号去掉
图像 622.png
 楼主| sunmeat 发表于 2014-9-25 21:53 | 显示全部楼层
图像 623.png
然后就可以修改了。
 楼主| sunmeat 发表于 2014-9-25 21:57 | 显示全部楼层
在115行后面添加#define SYSCLK_FREQ_108MHz 108000000,添加后如下图
图像 624.png
 楼主| sunmeat 发表于 2014-9-25 21:59 | 显示全部楼层
在163行后面添加
  1. #elif defined SYSCLK_FREQ_108MHz
  2.   uint32_t SystemCoreClock         = SYSCLK_FREQ_108MHz;        /*!< System Clock Frequency (Core Clock) */
添加后如下图所示
图像 626.png
 楼主| sunmeat 发表于 2014-9-25 22:07 | 显示全部楼层
在192行后面增加
  1. #elif defined SYSCLK_FREQ_108MHz
  2.   static void SetSysClockTo108(void);
增加后如下
图像 627.png
 楼主| sunmeat 发表于 2014-9-26 10:58 | 显示全部楼层
在433行增加,
  1. #elif defined SYSCLK_FREQ_108MHz
  2.   SetSysClockTo108();
增加后如下
图像 628.png
 楼主| sunmeat 发表于 2014-9-26 11:01 | 显示全部楼层
在1082行后增加如下代码
  1. #elif defined SYSCLK_FREQ_108MHz
  2. static void SetSysClockTo108(void)
  3. {
  4.   __IO uint32_t StartUpCounter = 0, HSEStatus = 0;

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

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

  14.   if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  15.   {
  16.     HSEStatus = (uint32_t)0x01;
  17.   }
  18.   else
  19.   {
  20.     HSEStatus = (uint32_t)0x00;
  21.   }

  22.   if (HSEStatus == (uint32_t)0x01)
  23.   {

  24.     /* HCLK = SYSCLK */
  25.     RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
  26.      
  27.     /* PCLK2 = HCLK */
  28.     RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
  29.    
  30.     /* PCLK1 = HCLK */
  31.     RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
  32.   
  33.     /*  PLL configuration: PLLCLK = HSE/2* (15+12) = 108 MHz */
  34.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
  35.                                         RCC_CFGR_PLLMULL));
  36.     RCC->CFGR |= (uint32_t)(0x08000000 | RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL12);

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

  39.     /* Wait till PLL is ready */
  40.     while((RCC->CR & RCC_CR_PLLRDY) == 0)
  41.     {
  42.     }
  43.    
  44.     /* Select PLL as system clock source */
  45.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
  46.     RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

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

  57. #endif
增加后如下
图像 629.png
 楼主| sunmeat 发表于 2014-9-26 11:02 | 显示全部楼层
然后再把system_stm32f10x.c上锁,加写保护
图像 630.png
olayman 发表于 2014-9-26 11:13 | 显示全部楼层
有意思,,回去试试GD32的片子。
 楼主| sunmeat 发表于 2014-9-28 10:36 | 显示全部楼层
olayman 发表于 2014-9-26 11:13
有意思,,回去试试GD32的片子。

这个频率确实比stm32有优势
55854234 发表于 2014-9-28 10:41 | 显示全部楼层
原则上是可行,不知道实际的运行效果和稳定性咋样?
zitral 发表于 2014-9-29 09:32 | 显示全部楼层
LZ忘说了你用的晶振频率是多少?
锐鑫同创 发表于 2014-10-14 13:00 | 显示全部楼层
GD的108M运行的很稳定啊,这个都是在GD测试范围内的一个标准来的
zitral 发表于 2014-10-20 10:49 | 显示全部楼层
MicroLCD 发表于 2014-10-17 11:28
请问楼主,static void SetSysClockTo108(void) 这个函数,达到108M, 那此时配合的-----GD32F外置的晶振还 ...

这里说的就是默认的8MHZ,如果用了别的值,使用库函数配置系统时钟(库函数是按默认的8MHZ配置的)的时候就要注意了!
 楼主| 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来配置的
 楼主| sunmeat 发表于 2014-10-27 08:27 | 显示全部楼层
zitral 发表于 2014-9-29 09:32
LZ忘说了你用的晶振频率是多少?

:lol8MHZ
 楼主| sunmeat 发表于 2014-10-27 08:27 | 显示全部楼层
锐鑫同创 发表于 2014-10-14 13:00
GD的108M运行的很稳定啊,这个都是在GD测试范围内的一个标准来的

我试了试,确实很稳定
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部