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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版