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

【NUCLEO-F410RB开发】+工程建立之RCC与众不同

[复制链接]
我的颈 提问时间:2015-12-21 17:32 /
本帖最后由 我的颈 于 2015-12-21 17:32 编辑

首先呢先感谢下论坛能有这么个活动,这么便宜得到一块开发板
东西不能白拿啊,所以呢写篇使用心得,作为一个小菜鸟第一次写,
写的不好,多多包涵!


1.板子到手之后就是建立工程
       我不太喜欢用库函数,感觉寄存器好用些,当然了涉及到复杂的协议,像USB什么的还是用官方的库比较省事,百度STM32F410RB 寄存的工程没找到(可能是我不太仔细吧…),百度没有,那STM32F410 NUCLEO(还是内部晶振) 这板子的更木有了.所以自己想着建个工程
开始喽,
       这是所需的文件,去keil文件下都能找到,include 记得填进去

GC

GC


2.工程文件弄好了就是捣鼓时钟了
       由于不带外部时钟而且官方的是库函数,所以需要自己配置一下RCC
  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. }
复制代码

3 .这样就配置好了时钟了
       PCLK为100MH
       通过MCO1输出(PA8)
       MCO1  :  5分频
       选择 PLL输出
       我们用分析仪看下时序

FXY

FXY

4.个人认为使用寄存器能学到不少东西.尤其像我们这些新手,配置RCC使用了1天时间,
遇到不少错误,不过最终能成功也是蛮不错的
还有就是 STM32F4中文版的RM手册,和STM32F410有不少出入,
我看的是STM32F410-RM0401.pdf

QQ截图20151221172810.png
卡在这个错误上一天
0不等于0 ,2不等于2
0等于2,  2等于6
不知大家能否看懂
也让官方的参数误导了
好了就这些
第一次发帖,多多关注
如有不足,欢迎指出
可以联系我 一起学习

可以在STM32F410 NUCLEO 运行.rar (95.28 KB, 下载次数: 3)

评分

参与人数 1 ST金币 +20 收起 理由
沐紫 + 20

查看全部评分

收藏 1 评论4 发布时间:2015-12-21 17:32

举报

4个回答
埃斯提爱慕 回答时间:2015-12-21 17:50:05
提示: 作者被禁止或删除 内容自动屏蔽
风子 回答时间:2015-12-21 17:59:40
那是寄存器的两个位,,并不表示实际的数值,上面写的很清楚,00 : PLLP=2,没写0=2吧
zhangdaijin 回答时间:2015-12-21 19:19:11
现在用寄存器的确实不多
我的颈 回答时间:2015-12-21 19:19:32
风子 发表于 2015-12-21 17:59
那是寄存器的两个位,,并不表示实际的数值,上面写的很清楚,00 : PLLP=2,没写0=2吧 ...

大概就这意思,,,折腾一天

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版