[STM32F3] STM30F303RE的工程模板建立及RCC时钟配置

[复制链接]
1997|0
 楼主| lianqiang 发表于 2016-3-4 10:28 | 显示全部楼层 |阅读模式
本帖最后由 lianqiang 于 2016-3-4 10:40 编辑

        手上有块NucleoF303的开发板,正好有时间就想上手试一试,也碰到了些问题,就把这些问题记了下来,怕以后忘了。
安装驱动什么就不说了,一步一步来就成。
接下来就是下载官方标准外设库stm32f30x_dsp_stdperiph_lib
w0w0w.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF258144

再来就是安装KEIL的pack文件,使得KEIL的器件列表有f303,pack在KEIL官网下载。
w0w0w.keil.com/dd2/Pack/#/eula-container
安装后接下来可以进行工程模板的建立
一:建立工程文件夹用于存放库文件
模板文件夹.jpg
OUT下建立文件
out文件.jpg
文件名可以自己定不一定要和我的一样
二:将下载的标准函数库文件放到我们建立的文件中
1.CMSIS
Cmsis.jpg
2.LIB
lib下.jpg
LIB.jpg
3.Startup
startup.jpg
选择stm32f303xe.s文件
4.user
user.jpg
三.开始建立KEIL工程
new project.jpg
新健DEMO.jpg
选择器件.jpg
点击cancel.jpg
选择cancle
添加文件到工程
文件名建立.jpg
user添加文件.jpg LIB添加文件.jpg
startup添加文件.jpg

cmsis添加文件.jpg

接下来就是编译环境设置
点击第一个魔术棒

target.jpg

List.jpg

debug1.jpg

debug2.jpg
CC  .jpg

选择OUTput.jpg

这样整个工程模板就建立完成了。

接下来就是RCC时钟的配置,因为这次使用的是STM32f303RE这款芯片与以前用的F411RE时钟系统相差比较大,使用时也发现了很多的问题。
首先是标准函数库对于STM32F303RE的PLL时钟源设置有问题。
303时钟树.jpg
这是303re的时钟树
cfgr寄存器15.16.jpg
这是303xe的CFGR寄存器,可以看出15:16bit的功能是独立的,与其他芯片是不同的。但是标准函数库中对于PLLSRC的定义只有一个
#define        RCC_CFGR_PLLSRC  ((uint32_t)0x00010000)  /*!< PLL entry clock source */
这样在配置是就会出错。
对于PLL时钟源的选择我是通过寄存器设置
PLL时钟源PREDIV1时钟源及分频系数配置.jpg
代替RCC_PLLConfig()函数。
这样就可以改变系统时钟,可以通过Systick定时器观察。
再来就是只改变以上的设置,在使用HIS作为PLL源时会出现波特率错误的问题。
因为使用库函数设置波特率时,函数调用
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
这个函数获取USART2的时钟,但是这个函数是有问题的
首先添加
时钟树HSI时钟源选择.jpg
因为getclock中需要使用到SRC
时钟源获取.jpg
接下来添加时钟获取函数
getclock原函数.jpg
原函数

RCCget clock fre函数修改.jpg
修改后
经过以上的修改STM32F303RE的时钟配置已基本完成,感觉对于303这款芯片ST的函数库做的很差,单只是RCC配置就有这么多问题。看来还需要尽快更新呀。
STM32F303RE Demo模板下载
New Demo.zip (3.16 MB, 下载次数: 22)


您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

105

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部