STM32——建工程

文章详细介绍了如何在Keil环境下为STM32F10X创建一个新的工程,包括创建工程文件、组织Lib文件夹(inc和src)、添加Startup驱动文件、User文件夹结构以及在工程中配置编译选项的过程。

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

一、建工程步骤

以STM32F10X类型举例

1. 创建一个工程文件

在这里插入图片描述

2. 里面创建四个文件

分别是:
在这里插入图片描述

3. Lib:存放标准库的.c和.h文件,其中inc放置.h文件,src放置.c文件

在这里插入图片描述
3.1将该路径下的inc和src拷贝到创建的工程-Lib里
在这里插入图片描述

4. Startup中存放驱动文件

4.1其源文件存放于固件库资料,路径如下
在这里插入图片描述
4.2 小容量产品使用xx_ld
中容量产品使用xx_md
大容量使用xx_hd

在这里插入图片描述
4.3而闪存存储器容量需要在芯片选型手册中,找到对应型号的单片机,找到对应参数名-Flash,查看大小并选择对应的文件复制到4.1中的startup,根据大小我们选择hd放到startup中
在这里插入图片描述

5.User文件中包含以下路径以下文件

在这里插入图片描述
在这里插入图片描述

6.创建工程Project

6.1打开keil,点击project下的new project,将新工程命名并保存到自己创建的文件中的project文件夹里
在这里插入图片描述
6.2之后选择STMicorelectronics里的STM32F1 Series里的STM32F103里的STM32F103ZE
在这里插入图片描述
6.3之后选择界面中的CMSIS中CORE
在这里插入图片描述
6.4 点击上方类似“品”的按钮
在这里插入图片描述
6.5修改第一个组的名字为Startup并新建两个组(点击图中按钮即可新建)
在这里插入图片描述
6.6选中Startup,点击右下方Add Files
在这里插入图片描述
6.7找到并双击Startup,选择All files,选中该.s文件并点击add,点击add之后点击close关闭
在这里插入图片描述
6.8剩余的User和Lib也如上述方法
6.9点击上方类似魔术棒的按钮,选择target,ARM Compiler选择如图所示

在这里插入图片描述
在这里插入图片描述
6.10点击c/c++,将STM32F10x_HD,USE_STDPERIPH_DRIVER输入Define中
在这里插入图片描述
6.11添加路径
在这里插入图片描述
在这里插入图片描述
6.11.1添加lib里的inc和user,点击ok
在这里插入图片描述
6.11.2配置完成如下图所示,确认无误后点击ok
在这里插入图片描述
6.11.3点击左上角空白页新建一个main.c,即可编写代码
在这里插入图片描述

6.11.4点击ctrl+s保存到工程文件的user中
在这里插入图片描述
6.11.5双击user,点击返回上一级,在user中找到main.c,点击add即可
在这里插入图片描述

### 解决STM32项目在Keil MDK 5中创失败的方法 #### 创工程时遇到的问题及解决方案 当尝试在Keil MDK 5中为STM32新的工程项目时,可能会遭遇多种障碍。为了确保顺利工程,需遵循一系列特定的操作指南。 对于初次设置环境而言,在启动软件之后应通过`Project -> New uVision Project...`来初始化一个新的项目文件[^4]。此时会弹出对话框提示选择目标设备;针对STM32系列微控制器来说,则要从列表内挑选相应的型号作为开发平台的基础配置项之一。这一过程至关重要,因为选择了错误的目标器件可能导致后续编译链接阶段出现问题。 完成上述步骤后,系统将会询问是否希望导入标准外设库或是HAL库支持——这取决于个人偏好以及具体应用场景的需求。如果决定采用官方提供的驱动程序包来进行底层硬件操作的话,那么议勾选对应的选项以便自动下载并集成必要的资源到当前工作空间当中去[^1]。 另外值得注意的是,在某些情况下,即使按照常规流程完成了以上各项设定仍然有可能面临构失败的情况发生。这时可以考虑检查以下几个方面: - **确认已正确安装STMicroelectronics的Pack文件**:这是获取适用于所选用MCU芯片版本的关键途径之一。可以通过访问“Manage Run-Time Environment”界面中的“Packs”标签页查看是否有最新的固件更新可用,并及时进行升级处理。 - **验证工具链版本兼容性**:不同年代发布的处理器可能需要匹配相应时期的编译器才能正常运作。因此应当核对ARM GCC Toolchain或者其他第三方插件是否存在过期现象,必要时重新安装最新发行版以消除潜在冲突隐患[^2]。 - **调整优化级别和其他编译参数**:有时候默认条件下指定的一些属性并不适合所有类型的源码结构。适当放宽或收紧这些约束条件或许能够帮助绕过难以定位的技术难题。例如降低-Os等级至-O0可减少不必要的复杂度从而简化调试难度[^3]。 最后但同样重要的一点在于保持良好的编程习惯,比如合理规划目录布局、命名规范统一等措施均有助于提高整体项目的稳定性和可维护程度。同时积极利用官方文档和技术社区寻求外部援助也是克服困难的有效手段之一。 ```c // 示例代码片段展示如何定义简单的LED控制函数 void LED_Init(void){ // 初始化GPIO端口... } int main(){ HAL_Init(); /* 初始化HAL库 */ SystemClock_Config();// 配置系统时钟 LED_Init(); while (1){ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); HAL_Delay(500); /* 延迟500ms */ } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值