Keil和SystemWorkbench工程添加源文件和头文件(.c和.h)的方法

本文详细介绍了如何在STM32CubeMX导出的Keil工程中添加源文件和头文件,包括创建Group并添加.c文件,以及配置头文件路径的方法。同时,还提供了SystemWorkbench项目的文件添加步骤。

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

今日参加一个培训,提取的一个SDK代码默认存在好几个目录,需要添加到STM32CubeMX导出的Keil工程里面。好久没用Keil了,发现都忘了怎么添加了文件夹了。

在此把Keil和SystemWorkbench项目添加源文件和头文件的方法做个记录:

1. Keil项目添加源文件和头文件的方法之一

1.1 右键点击项目名称,弹出菜单中选择Add Group...,我们把所有需要添加的源文件都放在这个Group中。
在这里插入图片描述
1.2 比如这个Group取名Link,右键点击Link,弹出菜单中选择Add Existing Files to Group 'Link'...
在这里插入图片描述
1.3 然后选择你需要添加的源文件所在的文件夹,按Ctrl+A全选此文件夹所有.c文件,点击Add。若有多个文件夹同样都加在Link这个Group中。
在这里插入图片描述
1.4 现在添加头文件路径。右键点击项目名称,选择Options for Target 'xxx'
在这里插入图片描述
1.5 然后选择C/C++,点击Include Paths右侧的...按钮。
在这里插入图片描述
1.6 弹出窗口中依次点击New(Insert)工具图标,然后点击弹出的新行右侧的...工具图标,选择需要添加的头文件所在目录。若有多个目录依次添加。这就完成了。
在这里插入图片描述

2. Keil项目添加源文件和头文件的方法之二

2.1 右键点击项目名称,弹出菜单中选择Manage Project Items在这里插入图片描述
2.2 然后添加组,或者添加源文件。
在这里插入图片描述

3. SystemWorkbench项目添加源文件和头文件

SystemWorkbench项目添加源文件和头文件不需要分别添加源文件和Include Paths,它只需要添加Include Paths就可以了。
3.1 右键点击项目名称,选择Properties
在这里插入图片描述
3.2 在C/C++ General-Paths and Symbols-Includes-GNU C窗口点击右侧的Add...在这里插入图片描述
3.3 在弹出窗口中选择File system(如果你把源文件和头文件放在工作区文件夹之外),也可以选择Workspace(如果你把源文件和头文件放在工作区文件夹内)。依次添加源文件和头文件所在的文件夹即可。(2.1中紫色图标的文件夹即为新添加的Include Path)。
在这里插入图片描述

### 如何在STM32上移植C文件 #### 准备工作 为了成功地将C文件移植到STM32平台,首先要确保开发环境已搭建完成。这通常意味着安装了适合目标MCU的IDE(如Keil MDK, IAR Embedded Workbench 或 STM32CubeIDE),以及获取相应的硬件调试工具。 #### 移植过程详解 当准备就绪之后,可以按照如下方法来移植现有的C代码至STM32项目中: 1. **创建新工程** 使用所选IDE新建一个针对特定型号STM32微控制器的工程项目。例如,如果打算使用的是STM32F103C8T6,则应在创建时指定此芯片作为目标设备[^2]。 2. **导入现有C源文件** 将待移植的`.c`对应的头文件(`.h`)复制粘贴到项目的适当目录下。大多数情况下,这些文件会被放置于`Src/``Inc/`两个文件夹内;前者用于存储实现细节而后者保存接口声明。 3. **配置链接脚本与编译选项** 修改Linker Script以适应新增模块所需的内存布局,并调整Compiler Settings中的优化级别其他参数设置,使之匹配原作者意图的同时也满足当前系统的特殊需求。 4. **适配外设驱动程序** 如果被迁移的应用依赖某些特定板级支持包(BSP)或HAL库函数调用来控制GPIOs、UARTs等资源的话,那么就需要依据实际使用的硬件情况更新这部分逻辑。对于初次使用者而言,推荐优先考虑采用官方提供的中间件组件来进行快速集成。 5. **测试验证功能正确性** 编写简单的应用程序片段去检验各个部分能否正常协同运作。比如可以通过LED闪烁模式确认基本定时机制有效运行,这里涉及到滴答定时器(Tick Timer),它是FreeRTOS操作系统的核心组成部分之一[^3]。 ```cpp // 示例:简单延时循环点亮LED #include "stm32f1xx_hal.h" int main(void){ HAL_Init(); SystemClock_Config(); // 初始化系统时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置PA5为推挽输出 */ GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); while (true){ HAL_Delay(500); // 延迟500ms HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 切换PA5电平状态 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值