2.1、STM32怎么创建工程:如何创建第一个工程模板(基于固件库)

发布者:Serene123最新更新时间:2022-04-21 来源: eefocus关键字:STM32  创建工程  工程模板  固件库 手机看文章 扫描二维码
随时随地手机看文章

一、 首先在电脑的某个目录下创建一个空文件夹用来存放工程文件。创建好后在该文件目录下分别创建CORE 、FWLIB、OBJ、SYSTEM、USER等五个子文件夹。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了行业规范。

二、打开keil软件,点击 Keil 的菜单: Project –>New Uvision Project,保存时将目录定位到自己创建的文件下的USER子目录下:

三、接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,我们选择STM232F407ZE(如果使用的是其他系列的芯片,选择相应的型号就可以了)特别注意: 一定要安装对应的器件支持包才会显示这些内容)。

这里是一些组件,直接点击OK即可,这样工程文件就算初步建立完成


四、打开TEST文件下的USER子目录下可见包含 2 个文件,Listings 和 Objects 文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件,这里可以自由设置,到时候会定位到OBJ里面去,这两个文件可不用理他


五、现在打开官方固件库,定位到STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesSTM32F4xx_StdPeriph_Driver下面,

将目录下面的 src,inc 文件夹 copy 到我们刚才建立的 FWLib 文件夹下面。

六、同样定位到 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm下面,将文件 startup_stm32f40_41xxx.s复制到 CORE 目录下面。

然后定位到目录STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISInclud, 将 里 面 的 四 个 头 文 件 :core_cm4.h、core_cm4_simd.h、core_cmFunc.h 以及core_cmInstr.h 同样复制到 CORE 目录下面。

七、继续定位到目录:

STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxInclude将里面的 2 个头文件 stm32f4xx.h 和 system_stm32f4xx.h 复制到 USER 目录之下。 这两个头文件是STM32F4 工程非常关键的两个头文件。

然后进入目录 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0ProjectSTM32F4xx_StdPeriph_Templates,


将 目 录 下 面 的 5 个 文 件 main.c , stm32f4xx_conf.h , stm32f4xx_it.c , stm32f4xx_it.h ,system_stm32f4xx.c 复制到 USER 目录下面。

最后USER文件如下图所示:

八、完成以上步骤后,下面我们需要把这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items,如下图:

九、建立三个Groups: USER,CORE,FWLIB。然后点击 OK即可


十、接上一步,添加需要的文件选择 FWLIB,然后点击右边的 AddFiles,定位到我们刚才建立的目录GECLIBsrc 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close.可以看到 Files 列表下面包含我们添加的文件。

注意:


1、例若只用到GPIO的配置,可以只选择stm32f4xx_gpio.c这样可以减少工程的代码量,提高编译的速度。


2、有个文件stm32f4xx_fmc.c 比较特殊。这个文件STM32F42 和 STM32F43 系列才用到,所以我们这里要把它删掉(注意是 stm32f4xx_fmc.c  要删掉,不要删掉stm32f4xx_fsmc.c)。


十一、用同样的方法,我们CORE下面需要添加的文件为 startup_stm32f40_41xxx.s(注意:你需要选择文件类型为All files才能看得到这个文件),USER 目录下面需要添加的文件为 main.c, stm32f4xx_it.c,system_stm32f4xx.c。最后点击 OK。

十二、进入设置界面设置头文件存放路径,如果没有设置头文件路径,那么工程会出现报错,头文件路径找不到

我们需要添加的头文件路径包括:CORE, USER以及GECLIBinc。若需要添加到自己建立的头文件,也需要做路径的添加


十三、STM32F40 系列的工程,还需要添加一个全局宏定义标识符。添加方法是点击魔术棒之后,进入 C/C++选项卡,然后在 Define 输入框连输入:STM32F40_41xxx,USE_STDPERIPH_DRIVER。注意这里是两个标识符 STM32F40_41xxx和 USE_STDPERIPH_DRIVER,他们之间是用英文的逗号隔开的,请大家注意。


十四、在做编译工程之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder forobjects…”,然后选择目录为我们上面的新建的 OBJ  目录。然后再OBJ目录下就可看到我们需要的程序.hex文件了。(上面第四步所说过)

十五、在编译之前,我们先把 main.c 文件里面的内容清空,编写自己的代码与此同时,我们要将 USER 分组下面的 stm32f4xx_it.c 文件内容清空。 或者删掉其中的 32 行对main.h 头文件的引入以及 144 行 SysTick_Handler 函数内容

下面我们点击编译按钮 编译工程,没有任何错误和警告,那工程文件就算完整的建立完成了。


十五、最后,打开工程文件会看到以下文件信息,这里不做一一介绍


注意:LIB里面的文件可根据自己需要进行增加或删除

如果是控制简单的GPIO输入或者输出,可以使用以上的这些文件就足够了。

关键字:STM32  创建工程  工程模板  固件库 引用地址:2.1、STM32怎么创建工程:如何创建第一个工程模板(基于固件库)

上一篇:9、STM32的PWM的原理与使用(内附代码)
下一篇:STM32的SPI的原理与使用(W25Q128附代码)

推荐阅读最新更新时间:2024-11-10 11:09

Cortex M3寄存器组
1、通用目的寄存器R0~R7 R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。 2、通用目的寄存器 R8-R12 R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32 位的thumb-2 指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。 3、特殊功能寄存器 程序状态寄存器:APSR, IPSR, EPSR ---- MRS/MSR APSR: N:负条件码标志位,运算结果小于0,N=1, 大于等于0,N=0; Z:零条件码标志位,运算结果为0,Z=1; C:进位条件码标志位,运算指
[单片机]
Cortex M3寄存器组
STM32系统学习——EXTI(外部中断)
一、 EXTI 简介 EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。 二、 EXTI 功能框图 EXTI 的功能框图包含了 EXTI 最核心内容,掌握了功能框图,对 EXTI 就有一个整体的把握,在编程时思路就非常清晰。EXTI功能框图见图。 在图可以看到很多在信号线上打一个斜杠并标注“20”字样,这个表示在控制器内部类似的信号线路有 20 个,这
[单片机]
<font color='red'>STM32</font>系统学习——EXTI(外部中断)
基于W5500的NetBIOS应用实例
一 实例背景 最近一个做智能家居的朋友面临这样的一个烦恼,他想让用户通过智能手机在家里方便地控制家居设备,又想让用户免除下载安装App的麻烦,通过浏览器直接打开设备内嵌的网页便可实现控制。但是设备的IP地址都是通过家里的路由器自动获得的,设备上又没有屏幕来显示其IP地址。问我有没有办法不输入IP地址来实现浏览器访问该设备网页的办法,就是类似DNS之类,但是无需连外网,只在家庭网络内能访问即可。 这使我想起一个古老的协议,NetBIOS(Network Basic Input/Output System)。这个在上世纪80年代由IBM开发的协议,主要用于数十台左右计算机组成的小型局域网,该协议的主要用途之一就是把计算机名称解
[单片机]
基于W5500的NetBIOS应用实例
ch32单片机怎么样?ch32好用吗?ch32和stm32的区别
Ch32单片机是龙芯微电子推出的一种高性能、低功耗的32位嵌入式处理器。它集成了ARM Cortex-M4内核,配备了丰富的接口和外设,可满足不同领域、不同应用场景的需求。在性能、功耗和功能方面,Ch32单片机比部分同级别的单片机还会优秀。 Ch32和其他单片机相比,其最大的优势在于其先进的处理器核心。在安全性、性能、低功耗等方面有着极高的表现。Ch32单片机采用了ARM Cortex-M4核心,而该核心是具有全面DSP功能的ARM Cortex-M系列中的一种。ARM Cortex-M4核心集成了DSP指令集和浮点计算,可满足高性能、高精度的数字信号处理的需求。同时,该核心还支持多线程,方便开发人员实现复杂应用程的并行执行,提高
[单片机]
基于stm32的超声波测距
首先来看模块图 在某宝上一搜就能找到,关于它的使用也是非常简单,先看数据手册里面需要注意的几点 1 基本的参数 在实际测试当中,最大测量三米多的距离还是可以,最小距离我没有做测试,我测的最小距离是50厘米,再往下没有继续测。 2 测距的基本原理 这里的基本原理其实应该是它的使用方法,如果你仔细看它的数据手册会发现这种测距模块还有另外一种使用方法:USART通信。 看文字不是很直观,简单粗暴来看图 在写程序的时候没有使用USART的方法,因为上图的这种驱动方式我认为比较简单,后面的程序也是按照这个时序图来编写的。 注意:上图中关于测距的公式,在程序中我没有使用他给的公式,这一
[单片机]
基于<font color='red'>stm32</font>的超声波测距
stm32学习之复位和时钟
1、复位 STM32F支持三种复位形式,分别为系统复位、电源复位和备份区域复位。 1.1 系统复位 当以下事件中的一件发生时,产生一个系统复位: 1. NRST管脚上的低电平(外部复位) 2. 窗口看门狗计数终止( WWDG复位) 3. 独立看门狗计数终止( IWDG复位) 4. 软件复位( SW复位)(将Cortex-M3中断应用和复位控制寄存器中的SYSRESETREQ位置1, 可实现软件复位。) 5. 低功耗管理复位 可通过查看RCC_CSR控制状态寄存器中的复位状态标志位来确认复位事件来源。 1.2 电源复位(电源复位将复位除了备份区域外的所有寄存器,地址0x0000_0000~
[单片机]
基于STM32的矿用本质安全型电源设计
0 引言 本安电源是本安型电气设备的一个重要组成部分,由于煤矿的机械化,井下传感器、弯道报警器等设备的供电,通信、报警都需要供电设备。但是基于井下复杂的环境,对供电设备的要求也是非常严格的,它要求电源电路的内部和引出线无论是在正常工作还是在故障状态下都是安全的并且产生的电火花不会点燃周围环境中的爆炸性混合物。本安电源有“ia”和“ib”两个等级。在本文中介绍的本安电源是井下常用的“ia”等级,也就是说在一个故障,一套保护电路损坏的情况下也能继续工作。 1 本安电源的组成及工作原理 1.1 电源 本系统中本安电源的输入+Vin、-Vin为48 V直流电源,经过DC/DC电源转换模块(U1)输出12 V直流电,U2是7
[单片机]
基于<font color='red'>STM32</font>的矿用本质安全型电源设计

推荐帖子

#以拆会友#移动电源
我这个人,很扣门一般不爱拆东东,看到别人拆比较好的东东,有点不满意,因为同人一样,任何物品都有寿命,应爱护才是,今天拆这明天拆那的,本来十年的东东,一拆也许不能用了。我拆这个移动电源是同事的,求我修理,我正好给拍下了。本来半个月前我就修好了,几奈去很远的地方开个会,现在才发上来。他这个电源充不了电了,有一点电一充就显示满,但插到手机无反应。本来是个扔货我用稳压电源直接焊电池两端,很劲充给救回来了。现在还给同事了。这个是机壳,边锁的,拆开就费好几个。
ddllxxrr 以拆会友
ST H系列 Cortex
ST最新的高频率MCU,除了H系列,还有没有出新款的Cortex?STH系列Cortex除了有CortexM系列的,还有CortexA系列的,也叫MPU还有W5系列的CortexM的H系列CortexA的MP13XX无线的STM32W5xx还一些特殊的电机的knx的等等除了有CortexM系列的,还有CortexA系列的,也叫MPU
grarrow stm32/stm8
电子学必知必会
《电子学必知必会》简要介绍了电子学的基本原理及基本元件,并采用系统的观点(即功能方框图的方法)来探索各种各样基本的模拟电路、数字电路以及微型计算机和无线电技术;然后再进一步介绍生活中常用的各种电子电路技术,包括手机、有线和无线网络、音视频电子技术以及工业控制技术。《电子学必知必会》采用系统观的方法讲解电子学的基础,避开了繁复的电路分析,内容易读易学,可供那些对日用电子产品有好奇心的人士阅读,帮助他们更好地了解、选择、使用及维护他们所拥有的日用电子产品。http://downlo
tiankai001 下载中心专版
IO-Polling的代码分析
原文地址在前一篇文章《IO-Polling实现分析与性能评测》中提到了IO-Polling与中断的原理区别,并通过两种模式下NVMeSSD的性能测试对两者进行了对比。这篇文章将深入到IO-Polling的代码层面,对这一IO处理模式进行一个解读。IO-Polling模式已经加入了linux4.4的内核,并已有多个成员组在测试IO-Polling对快速设备的性能影响。目前的IO-Polling仅支持direct-IO的sync模式读写操作,后期将加入对libaio的IO-Polli
白丁 FPGA/CPLD
嵌入式系统的学习方法及经验
最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命令就可以完成非常复杂的功能,可是我们有没有想过,为什么会有这样的效果?如果没有去追问,只是机械地完成,并且看到实验效果,这样做其实并没有真正的掌握系统移植的本质。  在做每一个步骤的时候,首先问问自己,为什么要这样做,然后再问问自己正在做什么?搞明白这几个问题,我觉得就差不多了,以后不管更
灞波儿奔 微控制器 MCU
传感器结合微机在汽车上的应用
传感器结合微机在汽车上的应用如发动机点火,防抱死系统控制等传感器结合微机在汽车上的应用
frozenviolet 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved