本帖最后由 我的颈 于 2015-12-21 17:32 编辑
首先呢先感谢下论坛能有这么个活动,这么便宜得到一块开发板
东西不能白拿啊,所以呢写篇使用心得,作为一个小菜鸟第一次写,
写的不好,多多包涵!
1.板子到手之后就是建立工程
我不太喜欢用库函数,感觉寄存器好用些,当然了涉及到复杂的协议,像USB什么的还是用官方的库比较省事,百度STM32F410RB 寄存的工程没找到(可能是我不太仔细吧…),百度没有,那STM32F410 NUCLEO(还是内部晶振) 这板子的更木有了.所以自己想着建个工程
开始喽,
这是所需的文件,去keil文件下都能找到,include 记得填进去
GC
2.工程文件弄好了就是捣鼓时钟了
由于不带外部时钟而且官方的是库函数,所以需要自己配置一下RCC
- /**
- 这是官方库函数的参数,我们按照他的参数设定
- * System Clock source = PLL (HSI)
- * SYSCLK(Hz) = 100000000
- * HCLK(Hz) = 100000000
- * AHB Prescaler = 1
- * APB1 Prescaler = 2
- * APB2 Prescaler = 1
- * HSI Frequency(Hz) = 16000000
- * PLL_M = 16
- * PLL_N = 200
- * PLL_P = 2
- * PLL_Q = 7
- * PLL_R = 2
- * VDD(V) = 3.3
- * Main regulator output voltage = Scale2 mode
- * Flash Latency(WS) = 3
- */
- void SYSClock_Init(void)
- {
- RCC->APB1ENR |=1<<28; //使能PWR
- PWR->CR |=3<<14; // 等级3
- RCC->CFGR |=(0<<4)|(4<<10)|(0<<13); //AHB不分频 APB1 2分频 APB2 不分频
- RCC->CFGR |=3<<21; //时钟输出 测试PLL
- RCC->CFGR |=7<<24; //5分频
- RCC->PLLCFGR =(16<<0)|(200<<6)|(0<<16)|(7<<24)|(2<<28);//M N P Q R
- RCC->CR |=1<<24; //使能PLL
- while(!((RCC->CR>>25)&0x01)); //等待 Ready
- FLASH->ACR |=1<<8; // Prefetch
- FLASH->ACR |=1<<9; /Instruction cache
- FLASH->ACR |=1<<10; //Data cache
- FLASH->ACR |=3<<0; //3个延时
- RCC->CFGR &=~(3<<0); //清除
- RCC->CFGR |=2<<0; //PLL source
- while((RCC->CFGR&(3<<2))!=(2<<2)); //等待就绪
- SYSTick_Init(100); //滴答定时器
- }
复制代码
3 .这样就配置好了时钟了
PCLK为100MH
通过MCO1输出(PA8)
MCO1 : 5分频
选择 PLL输出
我们用分析仪看下时序
FXY
4.个人认为使用寄存器能学到不少东西.尤其像我们这些新手,配置RCC使用了1天时间,
遇到不少错误,不过最终能成功也是蛮不错的
还有就是 STM32F4中文版的RM手册,和STM32F410有不少出入,
我看的是STM32F410-RM0401.pdf
卡在这个错误上一天
0不等于0 ,2不等于2
0等于2, 2等于6
不知大家能否看懂
也让官方的参数误导了
好了就这些
第一次发帖,多多关注
如有不足,欢迎指出
可以联系我 一起学习
å¯ä»¥å¨STM32F410 NUCLEO è¿è¡.rar
(95.28 KB, 下载次数: 3)
|
大概就这意思,,,折腾一天