keil使用
概述(来自搜索)
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
keil新建工程(基于标准库)
keil工程文件
STM32官方固件库(标准外设库下载)
keil.arm官网CMSIS PACKS
新建工程
- Project→create new project,选择芯片型号
- 新建文件夹——移植标准外设库
ProjectName/
├── ProjectName.uvprojx # 项目配置文件
├── ProjectName.uvoptx # 用户选项配置文件
├── Start/ # 启动文件夹
│ ├── startup.s # 启动汇编代码
│ ├── stm32f4xx.h # STM32F4 系列微控制器头文件
│ ├── system_stm32f4xx.h # 系统初始化头文件
│ ├── system_stm32f4xx.c # 系统初始化代码
│ ├── stm32f4xx_conf.h #配置和定义硬件外设的初始化参数
│ ├── stm32f4xx_it.c
│ ├── stm32f4xx_it.h
│ ├── CMSIS/Core/ # Cortex-M 硬件抽象层,CMSIS 核心文件
│ │ ├── core_cm4.h
│ │ ├── core_cmFunc.h
│ │ ├── core_cmInstr.h
│ │ ├── core_cmSimd.h
├── User/ # 源文件夹
│ ├── main.c # 主程序入口
├── Hardware/ # 外设
│ ├── peripheral.c # 外设驱动实现代码
│ ├── peripheral.h # 外设驱动声明文件
├── Libraries/ # 库文件夹
│ ├── STM32F4xx_StdPeriph_Driver/inc # STM32 标准外设库
│ ├── STM32F4xx_StdPeriph_Driver/src
从下载的固件库复制相应文件到对应文件夹
- keil中添加文件
- 包含相关文件路径
预处理定义
需要选择使用的芯片
可能的报错
- fmc,fsmc相关文件内存在未定义变量名→可能stm32f401不支持,直接删去.c/.h文件
- 头文件中定义了引用了main.h,由于直接从示例项目中copy,本项目未建立main.h,所以将该引用注释掉即可
- 做个点灯,检测一下
1 | #include "stm32f4xx.h" |
keil调试
配置相关
Option for target
keil工程目标选项配置
个人觉得这个博主关于keil的系列介绍的很详细,感兴趣的可以看一看,我只在这里记录一些常用的配置,不常用的不展开说明
- Device
新建工程的时候选择使用设备(在此之前需要去keil.arm下载相关设备的包) - target
- Arm 编译器
- 分为片外和片内
ROM (Flash) 地址:在 ‘Read/Only Memory Areas’ 部分,你可以看到 ‘Start’ 和 ‘Size’ 字段,这里填入的是 Flash 存储器的起始地址和大小。
程序存储地址
RAM 地址:在 ‘Read/Write Memory Areas’ 部分,同样会显示 ‘Start’ 和 ‘Size’ 字段,用于设置 RAM 的起始地址和大小。
- Output
输出可执行文件/库的地址,信息配置(初学者保持默认选项即可) - Listing
生成列表相关配置 - User
编辑之前/编译之前/编译之后执行的程序 - C++
- Preprocessor symbols预处理定义
stm32f4xx.h文件中即不用再定义使用芯片 - Language / Code Generation
- Include path
项目文件所在文件夹路径都包含进来 - Misc Controls 多功能控件
- Compiler control string
对编译器执行的指令
- Asm
针对asm汇编的配置,与C/C++配置内容相对应 - Linker链接器配置
Use Memory Layout from Target Dialog内存配置对话 - Debug
- Utilities
Setting:设置
很多人下载程序之后,需要复位一下程序才运行,原因在于没有勾选“Reset and Run”