你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030锁相环配置与读取不一致

[复制链接]
donsbin 提问时间:2017-8-21 21:30 /
本帖最后由 donsbin 于 2017-8-21 21:36 编辑

外挂8M的晶振,锁相环通过HSE一分频然后倍频。
通过RCC_GetClocksFreq(&gRCC_Clocks);接口读取时钟信息。
论坛下的DEMO

通过IAR编译DEBUG读取数据如下,主频变成了13.5M的了
QQ截图20170821212813.png


然后我又用MDK DEBUG了下,16M。正常了
QQ截图20170821212952.png
  1. static RCC_ClocksTypeDef gRCC_Clocks;
  2. void  BSP_Init (void)
  3. {
  4.     //BSP_IntInit();

  5.     RCC_DeInit();
  6.     RCC_HSEConfig(RCC_HSE_ON);                                  /* HSE = 4MHz --> 32 MHz range                          */
  7.     RCC_WaitForHSEStartUp();

  8.     RCC_HCLKConfig(RCC_SYSCLK_Div1);                            /* HCLK  = AHBCLK  = PLL / AHBPRES(1) =  48MHz.(max)    */
  9.     RCC_PCLKConfig(RCC_HCLK_Div1);

  10.     RCC_PLLConfig(RCC_PLLSource_PREDIV1,                        /* PCLK = PLL clock must be set from 16MHz --> 48MHz    */
  11.                   (RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL2));


  12.     RCC_PLLCmd(ENABLE);

  13.     while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {       /* Wait for PLL to lock.                                */
  14.         /* wait */;
  15.     }

  16.     FLASH_SetLatency(FLASH_Latency_1);                          /* 1 Flash wait states                                  */
  17.     FLASH_PrefetchBufferCmd(ENABLE);

  18.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                  /* HCLK = SYSCLK = PLL                                  */
  19.     while (RCC_GetSYSCLKSource() != RCC_CFGR_SWS_PLL) {         /* Check for clock source                               */
  20.         ;
  21.     }

  22.                
  23.                  RCC_GetClocksFreq(&gRCC_Clocks);
  24.                
  25.     BSP_LED_Init();                                             /* Init LEDs.                                           */

  26. }
复制代码

是不是我IDE配置问题??


收藏 评论3 发布时间:2017-8-21 21:30

举报

3个回答
@乔木 回答时间:2017-8-21 22:45:19
这好像这不是标准库,也不是HAL库啊,眼生。
donsbin 回答时间:2017-8-22 08:37:29
  1.    
  2.     /*
  3.     *           - 0x00: HSI used as system clock
  4.     *           - 0x04: HSE used as system clock
  5.     *           - 0x08: PLL used as system clock
  6.     *           - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices */
  7.     if(((uint8_t)(RCC->CFGR & RCC_CFGR_SWS)) == 0x08)
  8.     {
  9.         return ;
  10.     }

  11.     /* Enable Prefetch Buffer and set Flash Latency */
  12.     FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;

  13.     /* HCLK = SYSCLK */
  14.     RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

  15.     /* PCLK = HCLK */
  16.     RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;

  17.     /* PLL configuration */
  18.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
  19.     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMUL2);

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


  22.     /* Wait till PLL is ready */
  23.     while((RCC->CR & RCC_CR_PLLRDY) == 0)
  24.     {
  25.     }

  26.     /* Select PLL as system clock source */
  27.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
  28.     RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;

  29.     /* Wait till PLL is used as system clock source */
  30.     while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
  31.     {
  32.     }
复制代码
donsbin 回答时间:2017-8-22 08:38:18
标准库也试过了,一模一样

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版