keil5新建STM32工程文件--理论篇(以STM32F103为例)_keil 5中startup文件夹是什么-程序员宅基地

技术标签: stm32  STM32学习  嵌入式硬件  arm  mcu  


写在前面的话:由于被 会员活动吸引了开了年费会员所以便开始写博客, 来是为了巩固提高已学的知识, 来是为了做个记录防止遗忘, 来是为了写自己学习过程中曾经遇到的问题和不理解的地方、遇到的问题共享给友友们。

一、文件夹与文件结构

  先上一张图,对照着图片来讲,看图:
文件夹结构
   刚开始开始接触STM32是从大二开始,到现在也只有两年的时间,从学长那里继承下来的代码格式规范还是很有用的,好的工程文件让人一目了然,看到文件夹就知道这里面放的是什么,对代码的增改修改十分便捷,总结一句让人看着很舒服。
  整个工程可以粗略的划分为几个文件夹:

文件夹名称 存放内容
CMSIS 内核相关的文件
FWLIB 标准库文件
Project 工程文件
startup 芯片启动文件
user 用户编写的相关文件,主要编写的文件都在这个文件夹里
readme 对整个工程项目的补充说明、介绍和简介

1.1CMSIS文件夹

  CMSIS文件夹:CMSIS 标准英文全称是Cortex MicroControllerSoftware Interface Standard,翻译为中文意思就是ARM Cortex 微控制器软件接口标准。由于基于Cortex 核的芯片厂商很多,不只是ST 公司,为了解决不同厂家的Cortex 核芯片软件兼容的问题,ARM 和这些厂家就建立了这套CMSIS 标准,在这个文件夹下,一般是放置了如下一些文件:
在这里插入图片描述
  各个文件相互调用的关系如图所示(图源自 百度文库以F4为例,F103类似):

在这里插入图片描述
  可以看到上面部分的核心文件就是我们放在CMSIS里的七八个文件:

文件名称 内容简述
stm32f10x.h 很重要的文件,存放了f10x系列单片机寄存器定义、位定义和内存映射等
core_cm3.c /h CMSIS Cortex-M3核心外设访问层源文件
system_stm32f10x.c /h CMSIS Cortex-M3设备外围接入层系统源文件
stm32f10x_it.c /h 提供了所有异常处理程序和的模板
stm32f0x_conf.h 包含了库配置文件标准库的头文件

  这些文件之间的相互调用将整个单片机的系统框架构建起来,使我们用户运用起来不必仔细探索底层文件,可以在用户层面上进行编写代码,实现功能。

1.2FWLIB文件夹

  FWLIB文件夹:FW是单词Firmware缩写,就是固件的意思。FWLIB叫做STM32的固件库,也叫做标准库,里存放了很多的.C和.H文件,如图:
在这里插入图片描述

  主要用于存放STM32的一些寄存器的定义及一些底层驱动函数。用户使用时可以直接调用固件库封装的函数实现需要的功能,比如操作GPIO端口置位的函数GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)就在stm32f10x_gpio.c文件中,固件库的安装下载下一节会讲。

1.3Project文件夹

  Project文件夹:这里我主要放置的是通过keil5创建项目生成的文件像.uvprojx就是工程文件,以及一些输出文件,这些文件都是创建工程时keil自动生成的文件和文件夹,大家创建工程时可以观察观察每个文件夹的作用,像用的最多的就是Objects文件夹,要使用HEX烧录时编译器生成的.hex文件默认就在这个里面(也可以软件里设置存放自定义的文件夹)。找工程时就是通过看到这个Project文件夹我就知道了我的工程文件是在这里的。
  放一张图大家可以参照参照:
在这里插入图片描述

1.4startup文件夹

  startup文件夹:这个文件夹主要存放的是芯片的启动文件,我们用的是STM32F103VET6的芯片,每个不同的芯片都有自己的启动文件,启动文件不能选错,里面包含了中断向量表等信息不同的芯片略有差异,可以说启动文件是讲整个STM32运行起来的最重要的文件,起到将各个文件柔和在一起的作用,里面还有重要的SystemInit函数入口,可以看看下面的链接里面有详细的代码介绍链接: 启动文件详解
  怎么选择我们对应芯片的启动文件呢,像我们F103系列的芯片对应的启动文件开头肯定是像startup_stm32f10x…,但是启动文件又在f10x后又分了很多,如下图:
在这里插入图片描述
  具体怎么选择启动文件,需要看我们芯片对应的flash大小:

启动文件 适用芯片 flash大小
startup_stm32f10x_cl.s 互联型的STM32F105xx,STM32F107xx 忽略
startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx 16 ~ 32 Kbytes
startup_stm32f10x_ld_vl.s 小容量的STM32F100xx 16 ~ 32 Kbytes
startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx 64 ~ 128 Kbytes
startup_stm32f10x_md_vl.s 中容量的STM32F100xx 64 ~ 128 Kbytes
startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx 256 ~ 512 Kbytes
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx 256 ~ 512 Kbytes
startup_stm32f10x_xl.s 超大容量的STM32F101xx,STM32F102xx,STM32F103xx 512~1024Kbytes

  本次我们用的是STM32F103VET6,我们再来看一下具体的flash的大小都多少(图片来自: 图片):
在这里插入图片描述
  可以看到VET6对应的是512Kbytes容量的flash,所以我们选择启动文件是startup_stm32f10x_hd.s
  有关启动文件详细的作用可以参考,这里不在展开,后续的文章写到时会用到并做解释: 神奇链接.

1.5user文件夹

  user文件夹:这个文件夹主要是用来存放自己编写的.C和.H文件,一般我会将main.c和main.h文件放在user根目录下,在添加APP文件夹或者是Hardware文件夹等其他文件夹存放实现别的功能,下面展示一下,做的代码存放的规范,如图:
在这里插入图片描述  给其他人看到的代码就会一目了然,修改起来就容易找到目标文件。

1.6Readme文件

  Readme文件:这里主要是对整个工程的说明,对每个文件夹的说明,让看工程的人知道,我这一份代码是做什么用处的,对整个工程的解释说明。参考如下图是我之前写的一些简单的说明:
在这里插入图片描述

1.7小结

  至此我们将要建立工程的每个文件夹都进行了较详细的解读,为后续工程的创建打下基础,后续的工程模板创建就是基于上述的规范上来进行的,实现项目代码规范简洁明了。

二、标准库文件下载

  怎么才能得到CMSIS和FWLIB以及startup里我们需要的文件呢?接下来手把手演示怎么下载标准库文件。
  第一步:打开ST官网:ST官网链接
在这里插入图片描述
  第二步:选择工具与软件–>嵌入式软件–>STM32微控制器软件:
在这里插入图片描述
  第三步:选择STM32标准外设软件库:
在这里插入图片描述
  第四步:选择我们系列的芯片:F1
在这里插入图片描述

  第五步:点击获取软件:在这里插入图片描述
  第六步:许可协议点接受后,之前在ST官网没下载过的用户,需要通过邮箱来获取下载的资格如图:
请添加图片描述
  邮箱务必填写正确,之后会收到邮件:
在这里插入图片描述
  第七步:点击邮箱文件里的立即下载跳转页面,完成下载:
在这里插入图片描述
  至此标准库文件的下载已经完成了,可以解压后看看里面文件的内容。

三、附录

STM32标准库文件百度云链接下载:
链接:https://pan.baidu.com/s/1R8ooDVDze6ZzQx3kRFSu7g
提取码:75vv

下周更新创建工程文件实战篇嘿嘿嘿,有问题的小伙伴欢迎留言评论~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45857160/article/details/120931812

智能推荐

解决win10/win8/8.1 64位操作系统MT65xx preloader线刷驱动无法安装_mt65驱动-程序员宅基地

文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动

SonarQube简介及客户端集成_sonar的客户端区别-程序员宅基地

文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别

元学习系列(六):神经图灵机详细分析_神经图灵机方法改进-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进

【机器学习】机器学习模型迭代方法(Python)-程序员宅基地

文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代

base64图片打成Zip包上传,以及服务端解压的简单实现_base64可以装换zip吗-程序员宅基地

文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗

Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字-程序员宅基地

文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字

随便推点

ESXi 快速复制虚拟机脚本_exsi6.7快速克隆centos-程序员宅基地

文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos

好友推荐—基于关系的java和spark代码实现_本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。-程序员宅基地

文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。

南京大学-高级程序设计复习总结_南京大学高级程序设计-程序员宅基地

文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计

4.朴素贝叶斯分类器实现-matlab_朴素贝叶斯 matlab训练和测试输出-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出

Markdown 文本换行_markdowntext 换行-程序员宅基地

文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行

错误:0xC0000022 在运行 Microsoft Windows 非核心版本的计算机上,运行”slui.exe 0x2a 0xC0000022″以显示错误文本_错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行-程序员宅基地

文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex