打印
[STM32F3]

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

[复制链接]
1657|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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
安装后接下来可以进行工程模板的建立
一:建立工程文件夹用于存放库文件

OUT下建立文件

文件名可以自己定不一定要和我的一样
二:将下载的标准函数库文件放到我们建立的文件中
1.CMSIS

2.LIB


3.Startup

选择stm32f303xe.s文件
4.user

三.开始建立KEIL工程




选择cancle
添加文件到工程






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












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

接下来就是RCC时钟的配置,因为这次使用的是STM32f303RE这款芯片与以前用的F411RE时钟系统相差比较大,使用时也发现了很多的问题。
首先是标准函数库对于STM32F303RE的PLL时钟源设置有问题。

这是303re的时钟树

这是303xe的CFGR寄存器,可以看出15:16bit的功能是独立的,与其他芯片是不同的。但是标准函数库中对于PLLSRC的定义只有一个
#define        RCC_CFGR_PLLSRC  ((uint32_t)0x00010000)  /*!< PLL entry clock source */
这样在配置是就会出错。
对于PLL时钟源的选择我是通过寄存器设置

代替RCC_PLLConfig()函数。
这样就可以改变系统时钟,可以通过Systick定时器观察。
再来就是只改变以上的设置,在使用HIS作为PLL源时会出现波特率错误的问题。
因为使用库函数设置波特率时,函数调用
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
这个函数获取USART2的时钟,但是这个函数是有问题的
首先添加

因为getclock中需要使用到SRC

接下来添加时钟获取函数

原函数


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


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

105

帖子

3

粉丝