本帖最后由 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)
|