STM32–KEIL新建工程过程

目录

一:新建工程:

二:问题

1.头文件路径配置正确,编译的时候仍然报错,找不到头文件。

三其他

1.uvprojx和uvproj对比


一:新建工程:

1.project-》new uVesion Project..-》选择存放工程的文件夹

( uvprojx:mdk5及以后 和uvproj:mdk4及以前 ),不手动输入格式会不同mdk版本选择相对应默认的

2.具体型号选择,

环境什么的,默认,然后下一步,

3.新建完成,后面添加文件到组,头文件路径,其他配置。

详细过程:

我来详细介绍一下在Keil中新建STM32工程的完整过程:

1. 创建新工程:
```
1. File -> New -> Project
2. 选择保存位置和工程名称
3. 选择芯片型号:
   – 选择 STMicroelectronics -> STM32F1 Series
   – 选择具体型号(如STM32F103C8)
```

2. 配置工程选项:
```
Options for Target -> Target: (注意好像keil5 以后,在这里修改晶振就没有用了,可以使用宏定义 在Options for Target -> C/C++ 菜单下修改外汇晶振频率)
1. Crystal设置:晶振频率(一般8MHz或12MHz)
2. Xtal(MHz):填写外部晶振频率 
3. Memory Layout设置:
   – IROM1: 0x08000000, Size根据芯片选择
   – IRAM1: 0x20000000, Size根据芯片选择
```

3. 添加标准库文件:
```
1. 添加启动文件:
   – core_cm3.c 
   – startup_stm32f10x_md.s
   – system_stm32f10x.c

2. 添加标准外设库文件(根据需要):
   – stm32f10x_rcc.c
   – stm32f10x_gpio.c
   – stm32f10x_usart.c
   等等…
```

4. 创建基本工程结构:
```
添加分组(Add Group):
1. USER
   – main.c
   – stm32f10x_it.c
   – system_stm32f10x.c
   
2. CORE
   – core_cm3.c
   – startup_stm32f10x_md.s
   
3. FWLIB(标准库文件)
   – stm32f10x_rcc.c
   – stm32f10x_gpio.c
   等…

4. HARDWARE(硬件驱动)
   – led.c
   – key.c
   等…

5. SYSTEM(系统文件)
   – delay.c
   – sys.c
   等…
```

5. 配置C/C++选项:
```
Options for Target -> C/C++:
1. 添加Include Paths:
   – .\USER
   – .\SYSTEM\delay
   – .\SYSTEM\sys
   – .\CORE
   – .\FWLIB\inc
   等…

2. 在Define中添加:
   – USE_STDPERIPH_DRIVER
   – STM32F10X_MD (根据芯片型号选择)
```

6. 创建必要的头文件和源文件:
```c
// main.c
#include "stm32f10x.h"

int main(void)
{
    // 系统初始化代码
    while(1)
    {
        // 主循环代码
    }
}

// stm32f10x_it.c (中断服务函数)
#include "stm32f10x_it.h"

void NMI_Handler(void)
{
}
// … 其他中断服务函数
```

7. 配置Debug选项:
```
Options for Target -> Debug:
1. 选择调试器类型(如J-Link)
2. Settings配置:
   – Port: SW
   – Max Clock: 1MHz
   – Unit ID: 0
```

8. 设置编译优化:
```
Options for Target -> C/C++: 
1. Optimization:
   – Level: Level 1(-O1)
   – One ELF Section per Function
```

9. 工程文件整理:
```
创建以下目录结构:
Project
  ├─USER
  │  ├─main.c
  │  └─stm32f10x_it.c
  ├─CORE
  │  ├─core_cm3.c
  │  └─startup_stm32f10x_md.s
  ├─FWLIB
  │  ├─inc
  │  └─src
  ├─HARDWARE
  │  ├─inc
  │  └─src
  └─SYSTEM
     ├─inc
     └─src
```

10. 基本初始化代码:
```c
// main.c
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"

int main(void)
{
    // 关闭JTAG,保留SWD
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
    
    // 系统时钟初始化
    SystemInit();
    
    // 延时初始化
    delay_init();
    
    while(1)
    {
        // 主循环
    }
}
```

注意事项:
1. 确保所有必要的库文件都已添加
2. 路径中避免使用中文
3. 注意大小写敏感性
4. 保存工程时注意选择正确的位置
5. 定期备份工程文件

这就是一个基本的STM32工程创建过程。根据实际需求,你可能还需要:
1. 添加更多外设驱动
2. 配置中断优先级
3. 添加RTOS支持
4. 添加其他功能模块

二:问题

1.头文件路径配置正确,编译的时候仍然报错,找不到头文件。

情况:本身是stm32f103r8t6的文件和工程,但是是mak4版本的,使用mdk5打开的时候,提示没有stm32f103r8t6的包裹,升级不了;

想使用他的文件改成stm32f103c8t6的工程,stm32f103c8t6新建完成,文件结构也添加完成,头文件路径也正确,编译的时候仍然报错,找不到头文件;后面重建工程的时候,选择stm32f103r8t6型号,编译就没有问题了,这个程序也能下载到stm32f103c8t6单片机。

三其他

1.uvprojx和uvproj对比

uvprojx和uvproj是Keil MDK项目文件的两种不同格式:

1. uvproj:
```
– 旧版本Keil (MDK4及以前)使用的项目文件格式
– 基于普通文本格式
– 文件大小相对较小
– 兼容性好,适合老版本MDK
```

2. uvprojx:
```
– 新版本Keil (MDK5及以后)使用的项目文件格式
– 基于XML格式
– 包含更多项目信息
– 支持更多新特性
```

主要区别:

1. 版本兼容性:
```
uvproj:
– 只能在MDK4及以下版本打开
– 不能在MDK5中直接打开

uvprojx:
– 只能在MDK5及以上版本打开
– 不能在MDK4中直接打开
```

2. 文件结构:
```xml
<!– uvprojx (XML格式) –>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
  <SchemaVersion>2.1</SchemaVersion>
  <Header>### uVision Project, (C) Keil Software</Header>
  <Targets>
    <Target>
      <TargetName>Target 1</TargetName>
      <ToolsetNumber>0x4</ToolsetNumber>
      …
    </Target>
  </Targets>
</Project>

<!– uvproj (文本格式) –>
Project (
  Target (
    TargetName (Target 1)
    Device (STM32F103C8)
    …
  )
)
```

3. 工程迁移:
```
从MDK4升级到MDK5时:
1. 打开MDK5
2. File -> Open
3. 选择旧的.uvproj文件
4. MDK会自动转换为.uvprojx格式
5. 保存新项目

从MDK5降级到MDK4时:
1. 需要重新创建项目
2. 手动添加所有文件
3. 重新配置所有选项
```

4. 备份建议:
```
1. 保存完整项目文件夹
2. 包含所有源文件和库文件
3. 记录项目配置信息
4. 最好保存两种格式:
   – Project.uvprojx  (新版本)
   – Project.uvproj   (旧版本)
```

5. 多版本开发建议:
```
如果需要在不同版本MDK下开发:

1. 创建两个工程文件夹:
   Project_MDK4/
     ├─ Project.uvproj
     └─ …其他文件
   
   Project_MDK5/
     ├─ Project.uvprojx
     └─ …其他文件

2. 源代码使用相对路径
3. 分别维护两个版本的配置
4. 使用版本控制管理代码
```

6. 常见问题解决:
```
1. 文件损坏:
   – 使用备份文件恢复
   – 重新导入所有源文件
   
2. 打不开项目:
   – 检查MDK版本是否匹配
   – 尝试重新转换格式
   
3. 配置丢失:
   – 检查项目选项
   – 重新配置关键参数
```

建议:
1. 使用新项目优先选择uvprojx格式
2. 定期备份项目文件
3. 记录重要的配置信息
4. 保持良好的项目结构 
5. 如果需要兼容老版本,保留uvproj格式的备份

作者:code_snow

物联沃分享整理
物联沃-IOTWORD物联网 » STM32–KEIL新建工程过程

发表回复