STM32工程文件构成

从下图可以看出我们的工程目录是由CORE、OBJ、STM32F10x_FWLib、USER、SYSTEM以及HARDWARE文件夹组成的。此外还有一个文本文档README.TXT、以及一个Windows 批处理文件 (.bat)keilkilll.bat。

1、CORE文件夹

CORE文件夹下一共有三个文件,它们分别是core_cm3.c、core_cm3.h以及startup_stm32f10x_hd.s。

Core_cm3.c解析 STM32从3.0库开始引入了CMSIS,CMSIS是Cortex微控制器软件接口标准(Cortex  MicroController  Software  Interface  Standard)的缩写,这个是ARM定制的一个用于Cortex-M系列的一个标准,主要是为了提供通用api接口来访问内核和一些片上外设,提高代码的可移植性。

core_cm3.h这个包含的是一些ARM CORTEX-M3内核相关的函数和宏定义,例如核内寄存器定义、部分核内外设的地址等等,其对应的是core_cm3.c文件。

startup_stm32f10x_hd.s 是一个启动文件,里面是使用汇编语言写好的基本程序,当STM32 芯片上电启动的时候,受限会执行这里的汇编程序,从而建立起来C 语言的运行环境,所以我们把这个文件称为启动文件。

2、HARDWARE文件夹

HARDWARE 文件夹下面存放的是每个实验的外设驱动代码,他的实现是通过调用 FWLib 下面的固件库文件实现的,比如 led.c 里面调用 stm32f10x_gpio.c 里面的函数对 led 进行 初始化,这里面的函数是重点。在后续的实验中可以看到会引入多个源文件。

3、OBJ文件夹

OBJ :是用来存放编译过程文件以及hex 文件。

4、STM32F10x_FWLib文件夹

STM32F10x_FWLib文件夹下面一共有两个子文件夹,它们分别是inc和src,是ST标准库的主要内容。

inc是include的缩写,是标准库外设的头文件,里面的文件类型都是C/C++ Header File (.h)。

src是source的缩写,是标准库外设的源文件,里面的文件类型都是C Source File (.c)。

inc和src这两个文件夹是属于CMSIS之外的,属于芯片片上外设部分。在 src 和 inc 文件夹里的就是 ST 公司针对每个 STM32 外设而编写的库函数文件,每个外设对应 一个.c 和.h 后缀的文件。我们把这类外设文件统称为:stm32f10x_xxx.c 或 stm32f10x_xxx.h 文件xxx 表示外设名称。

        值得一提的是:这两个文件夹中,还有一个很特别的 misc.c 文件,这个文件提供了外设对内核中的 NVIC(中断向量控制器) 的访问函数,在配置中断时,我们必须把这个文件添加到工程中。

5、SYSTEM文件夹

        SYSTEM文件夹中一个包含着三个子文件夹,它们分别是delay、sys、usart。每个子文件夹下又分别包括一个C/C++ Header File (.h)和一个C Source File (.c)。

delay文件夹下有一个delay.c和一个delay.h,这两个文件夹是配置Systick 延时函数的两个文件夹。

sys文件夹下有一个sys.c和一个sys.h,这两个文件夹是配置IO 口位带操作的两个文件夹。

usart文件夹下有一个usart.c和一个usart.h,这两个文件夹是配置串口相关函数的两个文件夹。

6、USER文件夹

USER文件夹包含着许多不同类型的文件, USER 下面存放的主要是用户代码,

system_stm32f10x.c文件里面主要是系统时钟初始化函数SystemInit 相关的定义,一般情况下文件用户不需要修改。

stm32f10x_it.c 文件里面存放的是部分中断服务函数.

main.c文件主要存放的是主函数。

礦ision5 Project (.uvprojx)文件一般是用来打开工程的文件。其他的杂文件是编译器编译工程后生成的文件。

7、文本文档README.TXT

README 分组主要就是添加了 README.TXT 说明文件,对实验操作进行相关说明。

8、Windows 批处理文件 (.bat)keilkilll.bat

在Keil中编译工程时,会生成很多过程文件,工程文件夹就会变得很大,当复制此工程时,就会不方便。一般的过程文件后缀为:.o  .d  .crf  .htm  .dep  .lnp  .axf  .sct等。

于是可以用记事本输入下面内容:

del *.bak /s
del *.ddk /s
del *.edk /s
del *.lst /s
del *.lnp /s
del *.mpf /s
del *.mpj /s
del *.obj /s
del *.omf /s
::del *.opt /s  ::不允许删除JLINK的设置
del *.plg /s
del *.rpt /s
del *.tmp /s
del *.__i /s
del *.crf /s
del *.o /s
del *.d /s
del *.axf /s
del *.tra /s
del *.dep /s
del JLinkLog.txt /sdel *.iex /s
del *.htm /s
del *.sct /s
del *.map /s
exit

保存为 keilkilll.bat,后缀名为.bat。放在工程根目录下。要复制工程时,双击执行它,就会自动把上述的过程文件删除,让工程文件夹最小。

       keilkilll.bat就是调用windows的del命令删除文件而已,“/s”代表子目录中的也要删除。

跑马灯实验目录结构

跑马灯实验目录结构

总结:

        USER:存放工程文件、主函数文件 main.c,以及其他包括system_stm32f10x.c等。

        CORE :用来存放核心文件和启动文件。

        OBJ :是用来存放编译过程文件以及hex 文件。

        STM32F10x_FWLib :用来存放 ST 官方提供的库函数源码文件。

        SYSTEM:此文件夹里面的代码由 ALIENTEK 提供,是STM32F10x 系列的底层核心驱动函数,可以用在 STM32F10x 系列的各个型号上面,方便大家快速构建自己的工程。

        HARDWARE:存放我们其他硬件的代码。

【STM32学习笔记】(4)—— STM32工程文件详解相关推荐

  1. 【stm32】stm32学习笔记(江科大)-详解stm32获取Mpu6050陀螺仪和加速度

    目录 I2C 起始条件: 终止条件: 发送一个字节 接收一个字节 接收发送应答 代码 I2C I2C.C I2C.h Mpu6050 Mpu6050.c Mpu6050.h Mpu6050Reg.h ...

  2. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  3. 小猫爪:i.MX RT1050学习笔记26-RT1xxx系列的FlexCAN详解

    i.MX RT1050学习笔记26-RT1xxx系列的FlexCAN详解 1 前言 2 FlexCAN简介 2.1 MB(邮箱)系统 2.1.1 正常模式下 2.1.2 激活了CAN FD情况下 2. ...

  4. IP地址和子网划分学习笔记之《IP地址详解》

    在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. IP地址和子网划分学习笔记相关篇章: 1.I ...

  5. 我的学习笔记——CSS背景渐变(Gradients)详解

    我的学习笔记--CSS背景渐变(Gradients)详解 一.线性渐变(Linear Gradients) 1.语法 background-image: linear-gradient(directi ...

  6. IP地址和子网划分学习笔记之《子网划分详解》

    一,子网划分概述 IP地址和子网划分学习笔记相关篇章: 1.IP地址和子网划分学习笔记之<预备知识:进制计数> 2.IP地址和子网划分学习笔记之<IP地址详解> 3.IP地址和 ...

  7. Mybatis复习笔记3:映射文件详解

    映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...

  8. stm32学习笔记-1 STM32简介

    1 STM32简介 [toc] 注:笔记主要参考B站 江科大自化协 教学视频"STM32入门教程-2023持续更新中". 注:工程及代码文件放在了本人的Github仓库. 1.1 ...

  9. STM8学习笔记---新建IAR工程文件

    1.打开IAR工具 2.选择Project-Create New Project 3.选择Empty project,点击OK. 4.选择文件存储路径,输入工程名,点保存按钮. 5单击左上角新建文件按 ...

最新文章

  1. 测中策---我的Web自动化测试思路
  2. AXI4总线协议的发展历史
  3. 使用调试的方式搞清楚SAP UI5应用标题的更改方式
  4. hbase 的shell操作中相关属性说明
  5. 一建机电实务教材电子版_必背!一建《机电实务》高频考点,每日一背
  6. Superset单点登录调整源码
  7. 局部配置和全局配置_06. 教你零基础搭建小程序(解读全局配置文件-tabBar字段)...
  8. Java面试汇总:Java基础(一)
  9. Phinx - 数据库迁移及版本控制介绍(内含中文文档翻译)
  10. java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: NO)报错问题解决
  11. leetcode链表中的两数相加问题
  12. mysql innodb 缓存设置_数据库分享一: MySQL的Innodb缓存相关优化
  13. 【机器学习】EM算法详细推导和讲解
  14. 20145313《信息安全系统设计基础》第7周学习总结
  15. (二)office2016-excel冻结窗格
  16. JavaScript实现图片瀑布流
  17. linux php安装xsl扩展,11.32 php扩展模块安装
  18. 哪些东西做引流产品比较好?哪些商品是每天比较受欢迎的?
  19. 微信小程序快速上手(学习笔记总结)
  20. 周老师,李记者,朱老师

热门文章

  1. 【题解】NOI Online 2022 数学游戏题解
  2. 学python心得体会1000字-浅谈我对python的学习感受
  3. 莫言谈山东故乡:泥塑剪纸茂腔伴其成长-文学奖-莫言-诺贝尔奖
  4. O2OA下载及安装部署-Linux环境
  5. 回顾|Streaming Lakehouse Meetup · 北京站(附问题解答 PPT 下载)
  6. python实现最大矩形问题
  7. 某视频(dy)创作者平台上传视频步骤分析及authorization,CRC32参数
  8. GB51309实施后对于消防应急照明和疏散指示系统在城市隧道应用中的影响
  9. html帮助手册调用,HTML帮助手册..doc
  10. 写一个爬取东方财富网股票融资融券的pthon代码