Keil uVersion MDK 5.0 建立STM32工程
Keil uVersion MDK 5.0 建立STM32工程,在Keil 4时,还没有这么麻烦。
1. 建立工程目录:

用于存放工程。
2. 新建工程:

找到刚刚的位置, 给一个项目名字:

保存。
选择芯片类型:

没找到,说明你没有安装STM32的芯片包,要去官网下载一下咯。
项目配置:
这里很重要,选择一些必要的内容,否则,工程将出现错误。
必要的主要是以下部分:

这两项不选,应该不能用。
其他配置:
根据自己的需要进行配置。
假如你选择的有问题,将会有提示:

根据提示,选上就对咯。
我的最基本配置:

Drivers下面,按需选择咯,但是要注意,需要GPIO、DMA等支持:

工程成型:

Drivers的错误问题解决:
刚刚建立好工程,如果你使用了CMSIS Drivers,如果你恰巧还是比较旧的版本,比如说Keil.STM32F1xx_DFP.1.1.0.pack,你会发现,有部分头文件找不到,尤其是UART_STM32F10x.h,这是keil 5比较坑的地方。
如下是我的经过:
我增加了Driver的相关组件,但是头文件都找不到,出现如下错误:

'Driver_I2C.h' file not found.
诧异之余,只能找到增加路径了:

实际这些头文件在这里,所以在target里增加路径:



增加依赖,根据安装目录决定。
这个时候就解决这个问题了。
还有一个很大的坑:
Driver增加的是UART,但实际上,keil已经更改为USART,所以即便是增加了上述的路径,还是错的。
解决办法:
更新pack:
http://www.keil.com/dd2/Pack/#/eula-container
这里找到自己需要的pack,下载更新了。
重建工程,就没有这种问题了,国内很早就发现,但是,很多人是盗版的,根本没机会提交给keil去修改,所以有一段时间这个没法用,现在已经更新好了。
STM32的CMISIS Drivers使用方式
增加了相关驱动之后,你会发现,还是不能用,抛出对应于每个驱动的未定义宏错误:
如I2C: "I2C not configured in RTE_Device.h!"
SPI的:"SPI not configured in RTE_Device.h!"
最坑的USART/UART: "USART not configured in RTE_Device.h!"

以及诸如此类的错误,这是因为,驱动是给这一系列所开发的,你必须要根据你的芯片,修改RTE_Device.h文件。
我是用的是STM32F103RBT6,我需要按照这个芯片所具有的外部硬件资源,去打开相应的模块定义,就是修改对应宏值为1就可以了。
修改方法是,直接去RTE_Device.h里面修改,把对应模块的值修改为1就可以了。一定不要弄错了,修改的是芯片具有的,或者只修改自己所需要的。
