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