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

该博客详细介绍了STM32工程的目录结构,包括CORE、OBJ、STM32F10x_FWLib、USER、SYSTEM以及HARDWARE文件夹的作用。CORE包含了CMSIS核心文件和启动文件;HARDWARE存放外设驱动;OBJ存储编译过程文件;STM32F10x_FWLib是ST官方库;SYSTEM提供底层驱动;USER则包含用户代码如main.c和系统初始化文件。另外,还提到了README.TXT和keilkilll.bat文件的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 /s
 
del *.iex /s
del *.htm /s
del *.sct /s
del *.map /s
exit

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

 

 

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

 

跑马灯实验目录结构 

                                                                 跑马灯实验目录结构

 

 

总结:

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

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

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

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

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

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

 

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识点解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“橙点同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂飙的犇牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值