1回答

1收藏

麒麟座mini板时钟配置(12MHZ晶振)

物联网 物联网 3269 人阅读 | 1 人回复 | 2017-09-02

本帖最后由 09OPEN 于 2017-9-2 13:32 编辑

麒麟座mini板的晶振是12MHZ的,害我调了很久程序都有问题,检查了一下板子晶振竟然不是8MHZ。

这就需要我们在相关文件做一些修改了,首先修改stm32f10x这个文件。

在属性里面将此文件设置为非只读。
-》

点击应用后在按确定,完成设置。
在这个文件的115行左右,找到#if !defined  HSE_VALUE。在这句话前面加一条代码,自己设置外部晶振。
  1. #define HSE_VALUE    ((uint32_t)12000000)    //外部时钟
复制代码

或者将这条代码
  1. #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
复制代码
改为
  1. #define HSE_VALUE    ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
复制代码
然后保存。

本来大家常用 SystemInit(); 这条代码来设置时钟,大部分f103开发板包括官方库都是用8MHz的外部晶振。现在需要修改PLL的配置,前面是9倍频 8*9=72 。现在我们要把它配置成6倍频 6*12=72。代码如下
  1. /*
  2. */
  3. void RCC_Configuration(void)
  4. {
  5.     ErrorStatus HSEStartUpStatus;
  6.     RCC_DeInit();                                               //将外设RCC寄存器重设为缺省值
  7.     RCC_HSEConfig(RCC_HSE_ON);                                  //开启外部高速晶振(HSE)
  8.     HSEStartUpStatus = RCC_WaitForHSEStartUp();                 //等待HSE起振
  9.     if(HSEStartUpStatus == SUCCESS)                             //若成功起振,(下面为系统总线时钟设置)
  10.     {
  11.         FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);   //使能FLASH预取指缓存
  12.         FLASH_SetLatency(FLASH_Latency_2);                      //设置FLASH存储器延时时钟周期数(根据不同的系统时钟选取不同的值)
  13.         RCC_HCLKConfig(RCC_SYSCLK_Div1);                        //设置AHB时钟=72 MHz
  14.         RCC_PCLK2Config(RCC_HCLK_Div2);                         //设置APB1时钟=36 MHz(APB1时钟最大值)
  15.         RCC_PCLK1Config(RCC_HCLK_Div1);                         //设置APB2时钟=72 MHz
  16.         RCC_ADCCLKConfig(RCC_PCLK2_Div2);                       //RCC_PCLK2_Div2,4,6,8
  17.         RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);    //PLL必须在其激活前完成配置(设置PLL时钟源及倍频系数)12MHZ
  18.         RCC_PLLCmd(ENABLE);
  19.         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  20.         {
  21.         }
  22.         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  23.         while(RCC_GetSYSCLKSource() != 0x08)
  24.         {
  25.         }  
  26.     }
  27. }
复制代码
大家用它代替 SystemInit(); 就行了。
然后串口,spi都正常了。

分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

武器哈12

发表于 2017-9-3 10:34:19 | 只看该作者

可以参考,蛮棒哒~~~
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条