该模板创建与常规方法有稍许不同,为自己在学习过程所总结,写成学习笔记用来作为回顾和参考,按此参考做法约用30分钟左右。
目录
1、下载STM32标准库
我们可以在STM32官网上下载标准库 ,使用3.5.0的固件库,这里下载的是stsw-stm32054,解压进入STM32F10x_StdPeriph_Lib_V3.5.0文件,里面的Libraries就是我们所需的库文件,而Project则是官方给出的文件模板,Utilities是基于官方评估板的例程。这里选择自建模板,Libraries和Project将会被使用到。
官方下载连接:https://www.st.com.cn/zh/embedded-software/stsw-stm32054.html
2、新建本地工程文件夹
我们可以在本地电脑自己常用的地址上建立一个工程模板的文件夹,这里取名为Template,保存在E:\Keil uVision 5\Project下,没有Project可以自己新建。
这里以STM32F103C8T6为参考,不同的MCU型号在后续的启动文件选择时有所区别,在Template文件夹下建立文件夹为STM32F103C8T6。
在STM32F103C8T6文件下新建CMSIS、STARTUP、USER、LIB和DOC,其中CMSIS存放核心固件,STARTUP存放启动文件,USER存放我们自己编写的文件,包括main.c和中断文件,LIB存放我们需要引用的库文件,包括adc、flash等,DOC则存放说明文档,初学者学习时可不用。
3、给文件夹添加相应的库文件
(1)CMSIS
打开STM32F10x_StdPeriph_Lib_V3.5.0文件夹,找到Libraries\CMSIS\CM3\CoreSupport,将改文件夹下的core_cm3.c和core_cm3.h复制到刚才创建的Template\STM32F103C8T6\CMSIS下
然后再到Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x将stm32f10x.h、system_stm32f10x.c和system_stm32f10x.h复制到刚才创建的Template\STM32F103C8T6\CMSIS下
CMSIS文件夹如下:
(2)STARTUP
我们打开Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup文件夹,可以看到有arm、gcc_ride7、iar等多个文件夹,在不同的开发环境下用相应的启动文件,这里使用的时keil5,我们选择arm文件,里面是使用汇编语言编写的启动文件,这里不同型号的MCU的flash大小不一样,选择的启动文件也不一样
- ld.s flash大小为16~32K,适用于小容量产品
- md.s flash大小为64~128K,适用于中等容量产品
- hd.s flash大小为256~512K,适用于大容量产品
- xl.s flash大小为512~1024K,适用于超大容量产品
这里我们以C8T6为参考,C8T6的flash大小为64K,意味着我们应选择md.s的启动文件,但是为了方便我们日后拿到不同flash大小的STM32F10x时更好修改启动文件,在这里将arm文件夹下的所有启动文件复制到Template\STM32F103C8T6\STARTUP 文件下
STARTUP文件夹如下:
(3)LIB
LIB文件夹里我们放官方给出的固件库文件,打开STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver文件夹,里面有src、inc和html的说明文件,其中src里面是固件库的xxx.c文件,inc里面为编译需要引用的xxx.h头文件
我们将inc和src里的所有c文件和h文件复制到Template\STM32F103C8T6\LIB里
LIB文件夹如下:
(4)USER
这里用于存放我们自己编写的文件,包括main.c、中断文件stm32f10x_it.c、中断头文件stm32f10x_it.h和配置库的头文件stm32f10x_conf.h,我们可以借用ST官方给出的模板,打开STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template选择上述所说的四个文件,将其放在Template\STM32F103C8T6\USER文件夹下
USER文件夹如下:
4、创建工程文件
打开Keil5软件,在上方的工具栏选择“Project” -> "New uVision Project...",在Template文件下输入工程名字后创建,这里命名为new,创建后
接下来根据手上的芯片选择MCU型号,这里选择的是STM32F103C8T6
之后关闭弹出来的在线固件库管理页面
然后选择Manage Project Items
点击Groups右侧的加号,添加并改名为以下group,点击OK保存后再次打开
点击STARTUP,再在右侧下方点击“Add Files...”,在文件类型上选择“All files(*.*)”后打开STM32F103C8T6\STARTUP文件夹,按照3(2)里的要求选择启动文件,这里选择startup_stm32f10x_md.s
点击CMSIS,与上述步骤一样,打开STM32F103C8T6\CMSIS文件夹,添加该文件夹下的所有c文件
点击LIB,与上诉步骤一样,打开STM32F103C8T6\LIB,添加该文件夹下的所有c文件
点击USER,与上诉步骤一样,打开STM32F103C8T6\USER,添加该文件夹下的所有c文件
点击OK,完成组文件的添加
点击魔术棒,打开“Options for Target”
在“Target”栏下可以点击勾选“Use MicroLIB”来编写日志(非必要)
在“Output”栏下点击勾选“Craete HEX File”,生成HEX文件
在“C/C++”栏下点击“Include Paths”框右侧的省略号,选择STM32F103C8T6文件夹中的CMSIS、LIB、USER文件夹,此时就把所有C文件的头文件放入预编译路径,再在Define栏里输入“USE_STDPERIPH_DRIVER”
在“Linker”栏下点击下拉按钮,根据自己的烧录工具选择相应Link Debugger
点击OK,至此模板配置完成,点击编译键,得到成功编译的结果
笔记难免有误,望各位不吝赐教