今天,我将记录STM32如何新建一个模板步骤

第一步:首先先新建一个文件夹(英文命名的)——作为工程根目录

第二步;在文件夹中新建一个名为USER的子目录文件

第三步:点击 MDK 的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹 Template 之下,在这个目录下面建立子文件夹 USER

然后定位到 USER 目录下面,我们的工程文件就都保存到 USER 文件夹下面。工程命名为 Template,点击保存。

第四步:接下来会出现一个选择 CPU 的界面,就是选择我们的芯片型号。如图 3.3.3 所示,因为 ALIENTEK 战舰 STM32F103 所使用的 STM32 型号为 STM32F103ZET6,所以在这里我们选择 STMicroelectronicsSTM32F1 SeriesSTM32F103STM32F103ZET6(如果使用的是其他系列 的芯片,选择相应的型号就可以了。

点击 OK,MDK 会弹出 Manage Run-Time Environment 对话框,如图所示:

这是 MDK5 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建 开发环境,不过这里我们不做介绍。所以在图 3.3.4 所示界面,我们直接点击 Cancel,即可

得到如图  所示界面:

到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c 文件等。 4) 现在我们看看 USER 目录下面包含 2 个文件夹和 2 个文件,如下图 所示:

第五步:接下来,我们在 Template 工程目录下面,新建 3 个文件夹 CORE, OBJ 以及 STM32F10x_FWLib。CORE 用来存放核心文件和启动文件,OBJ 是用来存放编译过程文件以及 hex 文件,STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。已有的 USER 目录除了用来放工程文件外,还用来存放主函数文件 main.c,以及其他包括 system_stm32f10x.c 等等。

第六步:打开官方固件库包,定位到我们之前准备好的固件库包的目录 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面, 将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。

第七步:打开官方固件库包,定位到目录 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c 和 文 件 core_cm3.h 复 制 到 CORE 下 面 去 。 然 后 定 位 到 目 录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a rm 下面,将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面。

第八步:定位到目录: STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面 将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER 目录之下。然后将 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个文件 main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。

第九步:前面 8 个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将 这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items。

第十步: Project Targets一栏,我们将Target名字修改为Template,然后在Groups一栏删掉一个Source Group1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target 名字以及 Groups 情况。

第十一步:下面我们往 Group 里面添加我们需要的文件。我们按照步骤 10 的方法, 右键点击点击 Tempate,选择选择 Manage Project Itmes,然后选择需要添加文件的 Group,这里第一步我 们选择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close. 可以看到 Files 列表下面包含我们添加的文件。

第十二步: 用同样的方法,将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里 我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的 时候文件类型为.c,也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型 为 All files 才能看得到这个文件),USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c, system_stm32f10x.c.  这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK,回到工程主界面。

第十三步: 接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。 方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选 择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么 默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。

第十四步:下面我们点击编译按钮 编译工程,可以看到很多报错,因为找不到头文件

第十五步:回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添 加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path 一定要定位到最后一级子目录。然后点击 OK.

第十六步:接下来,我们再来编译工程,可以看到又报了很多同样的错误。为什么呢?这是因为 3.5 版 本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的 宏定义变量。按照步骤 16,定位到 c/c++界面,然后填写 “STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面(请注意,两个标识符 中间是逗号不是句号,如果您不能确定您输入的是正确的,请直接打开我们光盘任何一个 库函数实例,然后复制过来这串文字即可)。这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK。

第十七步:我们记得打开工程 USER 下面的 main.c 文件,复制下面代码到 main.c 覆盖已有代码,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告),可 以看到,这次编译已经成功了。

第十八步:这样一个工程模版建立完毕。下面还需要配置,让编译之后能够生成 hex 文件。同样点击 魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编 译生成 hex 文件,Browser Information 是可以查看变量和函数定义。

第十九步: 重新编译代码,可以看到生成了 hex 文件在 OBJ 目录下面,这个文件我们用 flymcu 下载 到 mcu 即可(参考 3.4.2 小节)。到这里,一个基于固件库 V3.5 的工程模板就建立了。

STM32系列之新建工程模板(三)的更多相关文章

  1. STM32学习笔记——新建工程模板步骤(向原子哥学习)

    1.  在创建工程之前,先在电脑的某个目录下面建立一个文件夹,我们先把它命名为Template,后面建立的工程可以放在这个文件夹下.在 Template 工程目录下面,新建 3 个文件夹USER , ...

  2. stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入.   STM ...

  3. Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  4. Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  5. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  6. STM32系列ARM单片机介绍

    STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex-M3内核.按性能分成两个不同的系列:STM32F103"增强型"系列和STM32F101 ...

  7. stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用库函数使用GPIO引脚功能.   补充   本文章为多年前学习 ...

  8. Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  9. Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

随机推荐

  1. ES6学习----let、const、解构赋值、新增字符串、模板字符串、Symbol类型、Proxy、Set

    这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第 ...

  2. $HDU$ 4352 ${XHXJ}'s LIS$ 数位$dp$

    正解:数位$dp$+状压$dp$ 解题报告: 传送门! 题意大概就是港,给定$[l,r]$,求区间内满足$LIS$长度为$k$的数的数量,其中$LIS$的定义并不要求连续$QwQ$ 思路还算有新意辣$ ...

  3. 使用Django进行后端开发

    目录 更换pip源 搭建虚拟环境 项目目录设置 项目相关配置 更换pip源 更换pip源 搭建虚拟环境 搭建虚拟开发环境 项目目录设置 项目目录设置 项目相关配置 项目相关配置

  4. 在nginx里面部署node.js本地服务器

    我一个前端,为啥要搞服务器呢?因为公司就招了一个后端啊,后端忙不过来,就叫我这个萌新前端去搞后端的东西,我太难了. 直接进入正题吧,因为公司需求,要我在nginx服务器上面搭一个node.js服务器, ...

  5. Pillow库来着

    第一步肯定是安装啦 pip install pillow 如果安装报错,可以升级一下pip库,因为有可能是pip版本低了......... pip show pip 升级用 python -m pip ...

  6. 1092 最好吃的月饼 (20分)C语言

    月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风血雨-- 在这里我们用数字说话,给出全国各地各种月饼的 ...

  7. RabbitMQ安装(Windows)

    一.下载安装 由于RabbitMQ是用Erlang语言编写的,因此需要先安装Erlang. 通过http://www.erlang.org/downloads获取对应安装文件进行安装 增加环境变量ER ...

  8. Docker系列-第五篇Docker容器数据卷

    1.是什么 在生产环境中使用 Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作 . 容器中的管理数据主要有两种方式 : 数据卷 ( Data V ...

  9. python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?) 记一次全景图像的拼接

    最近在学习过程中发现opencv有了很多变动, OpenCV 官方的 Python tutorial目前好像还没有改过来,导致大家在学习上面都出现了一些问题,现在做一个小小的罗列,希望对大家有用 做的 ...

  10. AI——第四次工业革命

    历史上发生了三次工业革命:第一次是以蒸汽机的发明为代表,改变了长久以来的棉纺织业,人类进入"蒸汽时代":第二次是以汽车的发明和电学的发展为代表,人类的活动范围和时长都极大地扩展,人 ...