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

STM32F410RB NUCLEO 时钟为什么会很准????

[复制链接]
我的颈 提问时间:2015-12-22 11:27 /
我使用的是STM32F410RBNUCLEO
板子上没有板载 晶振
使用的是内部的16MHz RC振荡器
通过锁相环 倍频到 100MHz
我使用MCO1输出PLL
MCO1 5分频
然后使用分析仪抓取得到20.00MHz
我的疑问是为什么会这么准?

RC不是有偏差?
不是有温漂?
求解释?
谢谢!






收藏 评论17 发布时间:2015-12-22 11:27

举报

17个回答
我的颈 回答时间:2015-12-22 14:25:15
moyanming2013 发表于 2015-12-22 14:18
Cube里面设置的是倍频、等上层时钟,并看不到输入的晶振是哪个,具体还得看下代码,如果你没改过(基本可 ...

我用的寄存器自己配置的
首先是系统的SystemInit
  1. void SystemInit(void)
  2. {
  3.   /* FPU settings ------------------------------------------------------------*/
  4.   #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
  5.     SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  6.   #endif
  7.   /* Reset the RCC clock configuration to the default reset state ------------*/
  8.   /* Set HSION bit */
  9.   RCC->CR |= (uint32_t)0x00000001;

  10.   /* Reset CFGR register */
  11.   RCC->CFGR = 0x00000000;

  12.   /* Reset HSEON, CSSON and PLLON bits */
  13.   RCC->CR &= (uint32_t)0xFEF6FFFF;

  14.   /* Reset PLLCFGR register */
  15.   RCC->PLLCFGR = 0x24003010;

  16.   /* Reset HSEBYP bit */
  17.   RCC->CR &= (uint32_t)0xFFFBFFFF;

  18.   /* Disable all interrupts */
  19.   RCC->CIR = 0x00000000;

  20.   /* Configure the Vector Table location add offset address ------------------*/
  21. #ifdef VECT_TAB_SRAM
  22.   SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
  23. #else
  24.   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
  25. #endif
  26. }
复制代码
然后是自己的配置
  1. /**
  2.                                 这是官方库函数的参数,我们按照他的参数设定
  3.   *            System Clock source            = PLL (HSI)
  4.   *            SYSCLK(Hz)                     = 100000000
  5.   *            HCLK(Hz)                       = 100000000
  6.   *            AHB Prescaler                  = 1
  7.   *            APB1 Prescaler                 = 2
  8.   *            APB2 Prescaler                 = 1
  9.   *            HSI Frequency(Hz)              = 16000000
  10.   *            PLL_M                          = 16
  11.   *            PLL_N                          = 200
  12.   *            PLL_P                          = 2
  13.   *            PLL_Q                          = 7
  14.   *            PLL_R                          = 2
  15.   *            VDD(V)                         = 3.3
  16.   *            Main regulator output voltage  = Scale2 mode
  17.   *            Flash Latency(WS)              = 3
  18.   */
  19. void SYSClock_Init(void)
  20. {
  21.         RCC->APB1ENR        |=1<<28;                                                                                //使能PWR
  22.         PWR->CR                        |=3<<14;                                                                         //        等级3
  23.         RCC->CFGR                |=(0<<4)|(4<<10)|(0<<13);                                //AHB不分频 APB1 2分频   APB2 不分频
  24.         RCC->CFGR                |=3<<21;                                                                                //时钟输出 测试PLL
  25.         RCC->CFGR                |=7<<24;                                                                                //5分频
  26.         RCC->PLLCFGR        =(16<<0)|(200<<6)|(0<<16)|(7<<24)|(2<<28);        //M N P Q R  
  27.         RCC->CR                         |=1<<24;                                                                                //使能PLL
  28.         while(!((RCC->CR>>25)&0x01));                                                                //等待 Ready
  29.         FLASH->ACR                |=1<<8;                                                                                //        Prefetch
  30.         FLASH->ACR                |=1<<9;                                                                                //Instruction cache
  31.         FLASH->ACR                |=1<<10;                                                                                //Data cache
  32.         FLASH->ACR                |=3<<0;                                                                                //3个延时

  33.         RCC->CFGR                &=~(3<<0);                                                                        //清除
  34.         RCC->CFGR                |=2<<0;                                                                                //PLL source
  35.         while((RCC->CFGR&(3<<2))!=(2<<2));                                                //等待就绪
  36.         SYSTick_Init(100);                                                                                        //滴答定时器
  37. }
复制代码
是不是SystenInit的问题?
我试试
我的颈 回答时间:2015-12-22 14:39:25
moyanming2013 发表于 2015-12-22 14:18
Cube里面设置的是倍频、等上层时钟,并看不到输入的晶振是哪个,具体还得看下代码,如果你没改过(基本可 ...
  1.         #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
  2.     SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  3.   #endif
复制代码

协处理器?怎么解释?
我的颈 回答时间:2015-12-26 10:08:12
moyanming2013 发表于 2015-12-22 14:18
Cube里面设置的是倍频、等上层时钟,并看不到输入的晶振是哪个,具体还得看下代码,如果你没改过(基本可 ...

我把板子的SB16 焊下来 测试结果一样,测试stm32 和stlink的晶振 连接是不通的,原理图上也根本就没有连接
moyanming2013 回答时间:2015-12-22 12:12:49
基本都是用的STLINK上的8MHz晶振。
风子 回答时间:2015-12-22 13:02:52
STLINK 的MCO输出精准的 8M 给MCU用,跟外部晶振一样,,你这不是用的内部吧
我的颈 回答时间:2015-12-22 14:02:26
风子 发表于 2015-12-22 13:02
STLINK 的MCO输出精准的 8M 给MCU用,跟外部晶振一样,,你这不是用的内部吧

QQ截图20151222110931.png
大神解释下?
我感觉我遇到问题了.求涨知识
我的颈 回答时间:2015-12-22 14:02:53
moyanming2013 发表于 2015-12-22 12:12
基本都是用的STLINK上的8MHz晶振。

大神看下?
我哪错了/
yanhaijian 回答时间:2015-12-22 14:06:28
手册上写的内部RC误差10%。
我的颈 回答时间:2015-12-22 14:08:51
yanhaijian 发表于 2015-12-22 14:06
手册上写的内部RC误差10%。

STlink PA8 MCO 确实输出到STM32F410 的OSC_IN
频率如下


QQ截图20151222110931.png

QQ截图20151222140658.png




我的颈 回答时间:2015-12-22 14:09:25
yanhaijian 发表于 2015-12-22 14:06
手册上写的内部RC误差10%。

明明是1%吗
moyanming2013 回答时间:2015-12-22 14:18:05
我的颈 发表于 2015-12-22 14:02
大神看下?
我哪错了/

Cube里面设置的是倍频、等上层时钟,并看不到输入的晶振是哪个,具体还得看下代码,如果你没改过(基本可以确定你没改过),那用的就是STLINK上的8MHz晶振。
我的颈 回答时间:2015-12-22 14:44:52
我的颈 发表于 2015-12-22 14:39
协处理器?怎么解释?

QQ截图20151222144403.png
M4的协处理器说明
.竟然遇到这种问题
埃斯提爱慕 回答时间:2015-12-22 15:35:28
提示: 作者被禁止或删除 内容自动屏蔽
我的颈 回答时间:2015-12-22 20:34:18

共同学习
moyanming2013 回答时间:2015-12-22 20:47:33
我的颈 发表于 2015-12-22 14:25
我用的寄存器自己配置的
首先是系统的SystemInit
然后是自己的配置

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