打印
[应用相关]

stm32里core文件

[复制链接]
1257|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pmp|  楼主 | 2024-5-23 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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文件夹包含着许多不同类型的文件,
        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 /sdel *.ddk /sdel *.edk /sdel *.lst /sdel *.lnp /sdel *.mpf /sdel *.mpj /sdel *.obj /sdel *.omf /s::del *.opt /s  ::不允许删除JLINK的设置del *.plg /sdel *.rpt /sdel *.tmp /sdel *.__i /sdel *.crf /sdel *.o /sdel *.d /sdel *.axf /sdel *.tra /sdel *.dep /s           del JLinkLog.txt /s del *.iex /sdel *.htm /sdel *.sct /sdel *.map /sexit
        保存为 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:存放我们其他硬件的代码。


使用特权

评论回复
沙发
呐咯密密| | 2024-6-22 15:00 | 只看该作者
工程结构还是需要熟悉一下的

使用特权

评论回复
板凳
jf101| | 2024-6-23 15:28 | 只看该作者
其实关键就是内核驱动文件非常重要的

使用特权

评论回复
地板
狗啃模拟| | 2024-7-31 23:36 | 只看该作者
例如 led.c 可能包含对 LED 灯的操作函数,这些函数调用 STM32 标准库中的函数(如 stm32f10x_gpio.c)来实现具体的硬件控制。

使用特权

评论回复
5
为你转身| | 2024-8-31 13:27 | 只看该作者
core_cm3.c: 该文件通常包含与Cortex-M3内核相关的低级函数实现。

使用特权

评论回复
6
发给她更好fh| | 2024-8-31 21:23 | 只看该作者
这些函数主要用于访问和操作Cortex-M3内核的内部寄存器。

使用特权

评论回复
7
公羊子丹| | 2024-9-16 07:56 | 只看该作者
核心文件(Core)、外部设置库(FWLib)、用户代码(USER)和驱动硬件(HARDWARE)的分离使得代码具有组织性和可扩展性。通过这种结构,开发者可以快速定位需要修改的文件,极大提升开发效率。同时,附加的README和批处理文件为工程管理提供了额外的便利。

使用特权

评论回复
8
童雨竹| | 2024-9-16 07:57 | 只看该作者
keilkilll.bat文件
这个批处理文件非常实用,通过自动删除编译过程生成的中间文件,减少了文件夹体积,作为工程的传输和备份。尤其是在开发周期长、文件基线的情况下,定期清理这些文件有助于

使用特权

评论回复
9
周半梅| | 2024-9-16 07:57 | 只看该作者
自述文件.TXT
README 文件对整个工程的说明至关重要,特别是在多人协作开发或共享工程时,提供清晰的说明文档可以帮助开发者快速上手

使用特权

评论回复
10
帛灿灿| | 2024-9-16 07:58 | 只看该作者
用户文件夹是工程的核心,包括主函数main.c、系统system_stm32f10x.c、中stm32f10x_it.c,main.c中

使用特权

评论回复
11
万图| | 2024-9-16 07:58 | 只看该作者
系统文件夹主要存放底层核心驱动代码,包括延迟函数(delay.c)、IO操作(sys.c)、串口配置(usart.c),

使用特权

评论回复
12
Wordsworth| | 2024-9-16 07:59 | 只看该作者
标准库(FWLib)的作用是为各个外部设置提供统一的访问接口,使得外部设置的配置和控制更加简洁明了。

使用特权

评论回复
13
Pulitzer| | 2024-9-16 07:59 | 只看该作者
OBJ文件夹存放编译过程中产生的中间文件和最终的hex文件。保留这些文件对调试和升级复用有帮助,但在实际复制工程时,清理这些中间文件(通过keilkilll.bat脚本)可以大大减少工程体积,方便移动

使用特权

评论回复
14
Bblythe| | 2024-9-16 08:12 | 只看该作者
外设驱动代码通过对FWLib库的调用实现,这种特殊设计使得代码的可维护性和复用性大大提升。特别是在项目开发过程中,每个外设模块独立驱动,方便升级

使用特权

评论回复
15
Uriah| | 2024-9-16 08:14 | 只看该作者
启动文件(startup_stm32f10x_hd.s)非常重要。它为C语言的执行建立环境,比如堆栈指针设置、初始化BSS段、调用SystemInit()

使用特权

评论回复
16
Clyde011| | 2024-9-16 08:14 | 只看该作者
CMSIS(Cortex Microcontroller Software Interface Standard)引入提供了一个标准化接口,提高了对ARM Cortex-M内核的访问,并提供了代码的可移植性。它允许开发者在处理不同的MCU时复用使用

使用特权

评论回复
17
l63t89| | 2024-9-16 11:18 | 只看该作者
CORTEX-M3内核相关的函数和宏定义

使用特权

评论回复
18
慢动作| | 2024-9-17 13:31 | 只看该作者
此外还有一个文本文档

使用特权

评论回复
19
lvuu| | 2024-9-17 14:26 | 只看该作者
SYSTEM以及HARDWARE文件夹组成的

使用特权

评论回复
20
o88ne| | 2024-9-17 18:20 | 只看该作者
有一个文本文档README.TXT

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

pmp

182

主题

7528

帖子

7

粉丝