STM32标准工程模板建立
以下内容皆是个人学习过程中的总结,记录一下整个过程,用于后期复习,如有不对之处,麻烦各位大佬指出~
(喜欢的朋友麻烦点个关注~~~ 后期还会进行持续更新)
小白以及新手在刚开始接触单片机的时候,想必遇到最多的问题就是如何建议一个标准的工程模板了,这篇文章就将详细介绍如何从0到1去建立一个标准的工程模板,本次采用的芯片型号为STM32L151RCT6,如果使用的是别的芯片型号,也一样可以参照文章进行操作
一、准备工作
首先先将STM32L151的标准固件下载好,如果不知道如何下载,可以参考上一篇博客
随即在桌面新建一个文件夹,命名为Template0,创建好后在该文件目录下分别创建CORE 、FWLIB、OBJ、SYSTEM、USER这五个子文件夹
CORE:用来存放核心文件和启动文件;
FWLIB:用来存放库函数源码文件;
OBJ:用来存放编译过程文件和hex文件;
SYSTEM:用来存放共用代码;
USER:用来存放工程文件和主程序main。
二、开始建立
做好以上准备工作之后,我们正式开始建立
2.1、新建工程,选择芯片
首先打开keil5MDK,点击上面”Project”选项,在弹出的下拉菜单中选择“new uVision Project...
在弹出的对话框中,选择之前创建的Template0文件夹,并在USER目录下新建一个工程,取名为Template0
之后再选择自己开发板上芯片的型号(要提前安装好对应的器件包),因为我们这里选用的是STM32L151RCT6的芯片,因此我们选择这个
之后会出现一个安装组件画面,直接取消就好了
这时候打开USER目录,有新生成的几个文件和文件夹,我们可以不用理
2.2、移植文件
现在打开下载好的官方固件库,定位到:en.stsw-stm32077_v1-0-0_v1.0.0\STM32L1xx_StdPeriph_Lib_V1.0.0\Libraries\STM32L1xx_StdPeriph_Driver下,把目录下的src和inc复制到我们刚新建的FWLIB下。
src存放的是固件库的.c文件,inc存放的是固件库的.h文件。(如果不知道官方固件库如何下载的,可以参考上一篇博客)
同样定位到:en.stsw-stm32077_v1-0-0_v1.0.0\STM32L1xx_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\CM3\CoreSupport将下面的两个文件复制到COER下
然 后 定 位 到 目 录:
en.stsw-stm32077_v1-0-0_v1.0.0\STM32L1xx_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32L1xx\startup\arm 下面,这里不同容量的芯片使用不同的启动文件,我们的芯片 STM32L151RCT6 是中容量芯片,因此我们选择startup_stm32l1xx_hd.s这个启动文件,并将其复制到COER目录下
(这里因为没找到L151的参考手册,因此引用一下F103的,我们只需要根据区别里面的介绍进行启动文件选择即可)
再定位到:en.stsw-stm32077_v1-0-0_v1.0.0\STM32L1xx_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32L1xx将下面的三个文件复制到USER目录下
接着继续定位到:en.stsw-stm32077_v1-0-0_v1.0.0\STM32L1xx_StdPeriph_Lib_V1.0.0\Project\STM32L1xx_StdPeriph_Template将下面的四个文件同样复制到USER下
至此,我们已经将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。
2.3添加文件进工程
首先点击品字型,然后:Project Targets 一栏,我们将 Target 名字修改为 Template,然后在 Groups 一栏删掉一个 Source
Group1,建立三个 Groups: USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target名字以及 Groups 情况
下面我们往上述文件夹中添加文件。和刚才相同的方法,点击那个品子型图标。然后选择需要添加文件的 Group,这里第一步我们选择 FWLIB , 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close。可以看到 Files 列表下面包含我们添加的文件。
(这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不
用添加没有用到的外设的库文件。例如我只用 GPIO,我可以只用添加 stm32f10x_gpio.c 而
其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样
的坏处是工程太大,编译起来速度慢,用户可以自行选择。)
用同样的方法,将 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, 回到工程主界面。
下面我们要告诉 MDK,在哪些路径之下搜索需要的头文件,也就是头文件目录。 这里大家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。 回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住, keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK
如果我们这时候进行编译的话,会发现报了很多错误,为什么呢?这是因为库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。点击魔术棒,定位到 c/c++界面,然后填写
“STM32L1XX_HD, USE_STDPERIPH_DRIVER”到 Define 输入框里面。这里解释一下,如果你用的是大容量那么 STM32L1XX_HD 修改为 STM32L1XX_MD,小容量修改为 STM32L1XX_LD. 然后点击 OK。
此时,工程模板就基本配置好了,编写main()函数覆盖原来的,是可以编译通过的。这样一个工程模版建立完毕。下面还需要配置,让编译之后能够生成 hex 文件。同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件, Browser Information 是可以查看变量和函数定义。
最后在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…” ,然后选择目录为我们上面新建的 OBJ 目录。 这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。
重新编译代码,会生成hex 文件在 OBJ 目录下面,这个文件我们用 flymcu 下载到 mcu 即可运行。 到这里,一个工程模板就建立了。
最后的最后我们进行SYSTEM文件夹的的内容添加,我们可以直接打开正点原子提供的实验,每个实验都有一个 SYSTEM 文件夹,下面有 3 个子目录分别为 sys,usart,delay,存放的是每个实验都要使用到的共用代码,每个子文件夹下面都有相应的.c 文件和.h 文件。 我们接下来要将这三个目录下面的代码加入到我们工程中去。
同样,我们需要将以上三个源文件的头文件路径告诉MDK,也就是添加头文件路径
注意:写代码时,记得在代码的最后面加上一个回车,否则会有警告
STM32标准工程模板建立相关推荐
- (一)使用TrueSTUDIO软件新建一个基于STM32标准库工程
一.TrueSTUDIO说明 不管是还在学习的还是已经工作的应该都很熟悉Keil和IAR这两款用来开发嵌入式的软件,在国内普遍用的这两款编译软件都是破解版的,并没有经过正规渠道授权注册,这就导致了在开 ...
- 【STM32H7教程】第4章 STM32H7工程模板建立(MDK5)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第4章 STM32H7工程模板建立(MDK5) 本章 ...
- IAR新建stm32工程,完美移植stm32标准库(附源码)
开发环境:Window 10 64bit 开发工具:IAR Embedded Workbench 硬件:stm32f103c8t6 基于IAR 开发工具,新建立STM32F1系列的最小开发例程,并加入 ...
- 了解库开发,我们从STM32标准库开发学起
摘要:从STM32新建工程.编译下载程序出发,让新手由浅入深,尽享STM32标准库开发的乐趣. 自从CubeMX等图像配置软件的出现,同学们往往点几下鼠标就解决了单片机的配置问题.对于追求开发速度的业 ...
- 基于STM32标准库的MS5837程序移植
基于STM32标准库的MS5837程序移植 一.准备工作 1. 硬件电路 2. 新建工程 二.开始移植 1. IIC底层模拟 2. MS5837移植 3. 主函数编写 4. 代码调试结果 三.源代码下 ...
- 【STM32】STM32标准库与HAL库对照学习教程一--使用寄存器操控LED闪烁详讲
[STM32]STM32标准库与HAL库对照学习教程一--使用寄存器操控LED闪烁详讲 前言 本教程文章是我在学习STM32标准库和HAL库后写的,想通过标准库与HAL库的对照学习加强我对STM32的 ...
- stm32标准外设库和芯片资料下载地址
今天整理了一下当初开发手环固件时的资料. stm32 标准外设库官网下载地址 https://my.st.com/content/my_st_com/en/products/embedded-soft ...
- STM32标准库工程中移植TencentOS-tiny
一.移植前的准备 1. 引言 因为项目的原因需要将原有的标准库工程升级为基于TencentOS-tiny的RTOS工程,所以花费一点时间记录移植过程,提供一份向基于STM32标准库的老工程中移植Ten ...
- STM32标准库的引入视频课程-第3季第6部分-朱有鹏-专题视频课程
STM32标准库的引入视频课程-第3季第6部分-1017人已学习 课程介绍 本课程是<朱有鹏老师单片机完全学习系列课程>第3季第6个课程,本课程详细讲解了STM32官方新标 ...
最新文章
- 灾难恢复级别_如何实施云计算灾难恢复
- Theano2.1.5-基础知识之打印出theano的图
- QT窗体控件自适应大小
- HTTP响应代码中文详解
- SQLite 时间格式化
- php 数组去impload,你真的了解 load 方法么?
- 简易c语言编程软件,c语言开发工具下载
- 计算机的表白隐藏功能,微信还有这个功能?隐藏代码还能表白!教你高级告白手段...
- Python英语单词拼写训练考试系统,单词默写系统,统计易错词,基于Django
- Absolute Enable Right Click Copy 简单快速解除滑鼠右键使用限制
- 【综合类型第 35 篇】程序员的七夕浪漫时刻
- malloc(): corrupted top size 解决
- 计算机模拟需要什么配置电脑,城市天际线配置要求 最低电脑配置要求
- Windows icon缓存的清理
- CentOS下安装XAMPP详细教程
- 智能硬件APP开发之路:基于机智云APP开源框架
- android x86怎么装驱动,mt65xx android phone驱动怎么安装【图文教程】
- MyZip Pro for Mac(专业解压缩工具)
- 需求文档 BUC UC
- 云海IOP 3.0:为行业云而生
热门文章
- 项目经验#关于前端后台项目的从0-1到1开发记录(二)
- 磁盘阵列mdadm磁盘配额
- ABB轴计算机板x6接口,ABB喷涂机器人零点丢失问题及解决方法
- 我用 Java 几分钟处理完 30亿 个数据...
- 高逼格PPT技能以及普通PPT技能档次提升学习
- Temporal Segment Networks for Action Recognition in Videos 用于动作识别的时序分割网络
- Multi Voltage Design的floorplan如何做?
- 一文探讨可解释深度学习技术在医疗图像诊断中的应用
- 光纤通道光模块与以太网光模块区别
- 编程规范及程序员的自我修养