STM32F103标准库开发:Keil5新建STM32工程

新建STM32工程
步骤一:创建工程模板文件

1.新建一个文件夹 template

2.在文件夹template里面新建六个文件
(1)CMSIS: 存放内核驱动程序和启动引导文件
(2)FWLIB:存放库函数文件
(3)Project:存放工程文件
(4)User: 存放用户程序(主函数)


效果图:

<ignore_js_op>st-img


步骤二:导入stm32固件库
STM32固件库的下载方式,在文章开头有链接。

1. 打开STM32F10x固件库文件

<ignore_js_op>st-img

其中需要用到的两个文件:Libraries和Project。

2. 导入文件到 CMSIS 文件
(1)导入内核驱动程序

<ignore_js_op>st-img

STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。


(2)导入启动引导文件

STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。

<ignore_js_op>st-img

启动引导文件名的英文缩写的意义:
cl:互联型产品,stm32f105/107系列。
vl:超值型产品,stm32f100系列。
xl:超高密度(容量)产品,stm32f101/103系列。
ld:低密度产品,Flash小于64KB。
md:中等密度产品,Flash等于64KB或128KB。
hd:高密度产品,Flash大于128KB。

(3)最后CMSIS 文件效果图

<ignore_js_op>st-img

3. 导入文件到 FWLIB 文件
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。



最后 FWLIB 文件效果图

<ignore_js_op>st-img

4. 导入文件到 User 文件
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。

<ignore_js_op>st-img

STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。

<ignore_js_op>st-img

最后 User 文件效果图

<ignore_js_op>st-img

步骤三:新建STM32工程
1. 新建工程

<ignore_js_op>st-img

将工程文件建在 Project 文件中

<ignore_js_op>st-img

2. 选择 STM32F103C8 芯片

<ignore_js_op>st-img

确定之后跳出一个窗口,直接关掉

<ignore_js_op>st-img

3. 添加工程文件到Keil_5工程中

<ignore_js_op>st-img

新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。

<ignore_js_op>st-img

因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件

<ignore_js_op>st-img

<ignore_js_op>st-img

最后添加成功

<ignore_js_op>st-img

4. 添加路径和宏定义
点击魔法棒,选择 C/C++
添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD
注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD

<ignore_js_op>st-img

添加文件路径

<ignore_js_op>st-img

5. 选择默认ARM编译器版本

<ignore_js_op>st-img

6. 编译运行成功

<ignore_js_op>st-img

问题解答

在评论区看到有人遇到以下问题:

问题1:
出现750个以下错误
…\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined

<ignore_js_op>st-img

是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。
正常这三个是定义在 stdint.h 文件中。

<ignore_js_op>st-img

没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h>

问题1解决方法:
正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。
没有的,自行加上#include <stdint.h> ,便可以解决问题!



<ignore_js_op>st-img
<ignore_js_op>

T}77H`E0J1SFRKFAZ(LF6T0.png (66.3 KB, 下载次数: 34)

 

T}77H`E0J1SFRKFAZ(LF6T0.png
 
 
 
 赞  收藏  评论0 
 
 
posted @ 2025-07-29 15:34  苍月代表我  阅读(631)  评论(0)    收藏  举报