Keil uVersion MDK 5.0 建立STM32工程,在Keil 4時(shí),還沒(méi)有這么麻煩。
1. 建立工程目錄:

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

找到剛剛的位置, 給一個(gè)項(xiàng)目名字:

保存。
選擇芯片類(lèi)型:

沒(méi)找到,說(shuō)明你沒(méi)有安裝STM32的芯片包,要去官網(wǎng)下載一下咯。
項(xiàng)目配置:
這里很重要,選擇一些必要的內(nèi)容,否則,工程將出現(xiàn)錯(cuò)誤。
必要的主要是以下部分:

這兩項(xiàng)不選,應(yīng)該不能用。
其他配置:
根據(jù)自己的需要進(jìn)行配置。
假如你選擇的有問(wèn)題,將會(huì)有提示:

根據(jù)提示,選上就對(duì)咯。
我的最基本配置:

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

工程成型:

Drivers的錯(cuò)誤問(wèn)題解決:
剛剛建立好工程,如果你使用了CMSIS Drivers,如果你恰巧還是比較舊的版本,比如說(shuō)Keil.STM32F1xx_DFP.1.1.0.pack,你會(huì)發(fā)現(xiàn),有部分頭文件找不到,尤其是UART_STM32F10x.h,這是keil 5比較坑的地方。
如下是我的經(jīng)過(guò):
我增加了Driver的相關(guān)組件,但是頭文件都找不到,出現(xiàn)如下錯(cuò)誤:

'Driver_I2C.h' file not found.
詫異之余,只能找到增加路徑了:

實(shí)際這些頭文件在這里,所以在target里增加路徑:



增加依賴,根據(jù)安裝目錄決定。
這個(gè)時(shí)候就解決這個(gè)問(wèn)題了。
還有一個(gè)很大的坑:
Driver增加的是UART,但實(shí)際上,keil已經(jīng)更改為USART,所以即便是增加了上述的路徑,還是錯(cuò)的。
解決辦法:
更新pack:
http://www.keil.com/dd2/Pack/#/eula-container
這里找到自己需要的pack,下載更新了。
重建工程,就沒(méi)有這種問(wèn)題了,國(guó)內(nèi)很早就發(fā)現(xiàn),但是,很多人是盜版的,根本沒(méi)機(jī)會(huì)提交給keil去修改,所以有一段時(shí)間這個(gè)沒(méi)法用,現(xiàn)在已經(jīng)更新好了。
STM32的CMISIS Drivers使用方式
增加了相關(guān)驅(qū)動(dòng)之后,你會(huì)發(fā)現(xiàn),還是不能用,拋出對(duì)應(yīng)于每個(gè)驅(qū)動(dòng)的未定義宏錯(cuò)誤:
如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!"

以及諸如此類(lèi)的錯(cuò)誤,這是因?yàn)?,?qū)動(dòng)是給這一系列所開(kāi)發(fā)的,你必須要根據(jù)你的芯片,修改RTE_Device.h文件。
我是用的是STM32F103RBT6,我需要按照這個(gè)芯片所具有的外部硬件資源,去打開(kāi)相應(yīng)的模塊定義,就是修改對(duì)應(yīng)宏值為1就可以了。
修改方法是,直接去RTE_Device.h里面修改,把對(duì)應(yīng)模塊的值修改為1就可以了。一定不要弄錯(cuò)了,修改的是芯片具有的,或者只修改自己所需要的。
