开发方式
寄存器开发:类似于61开发,直接配置寄存器,最底层、最直接、效率较高 //STM32结构复杂,寄存器较多,不建议使用 基于标准库(库函数):使用ST官方提供的函数,通过函数间接配置寄存器 //推荐,可以配置寄存器、提高开发效率 基于HAL库:利用图形化界面快速配置STM32,适合快速上手STM32 //方便快捷、隐藏底层逻辑,不适合新手
模板配置
文件位置
Libraries:库函数文件,建立工程使用 Project:官方提供工程实例和模板 Utilities:官方评估板,测试STM32 Release_Notes.html:库函数发布文档,版本说明 stm32f10x_stdperiph_lib_um.chm:使用手册,使用库
路径添加必要文件
启动文件
源路径:STM32入门教程资料 \ 固件库\ STM32F10x_StdPeriph_Lib_V3.5.0 \ Libraries \ CMSIS \ CM3 \ DeviceSupport \ ST \ STM32F10x \ startup \ arm 作用:STM32程序从启动文件开始执行 目标路径:project/Start(新建)
启动文件选择
缩写 | 释义 | Flash容量 | 型号 |
---|---|---|---|
LD_VL | 小容量产品超值系列 | 16~32K | F100 |
MD_VL | 中容量产品超值系列 | 64~128K | F100 |
HD_VL | 大容量产品超值系列 | 256~512K | F100 |
LD | 小容量产品 | 16~32K | F101/102/103 |
MD | 中容量产品 | 64~128K | F101/102/103 |
HD | 大容量产品 | 256~512K | F101/102/103 |
XL | 加大容量产品 | 大于512K | F101/102/103 |
CL | 互联型产品 | F105/107 |
外设寄存器描述文件
源路径:STM32入门教程资料 \ 固件库\ STM32F10x_StdPeriph_Lib_V3.5.0 \ Libraries \ CMSIS \ CM3 \ DeviceSupport \ ST \ STM32F10x 作用: stm32f10x.h相当于51单片机头文件,描述寄存器和对应的地址 system.c/.h:配置时钟,主频72MHz由它来配置 目标路径:project/Start(新建)
内核寄存器描述文件
注意:STM32由内核和内核外围设备组成,内核寄存器描述文件和外围设备描述文件不在一起 源路径STM32入门教程资料 \ 固件库\ STM32F10x_StdPeriph_Lib_V3.5.0 \ Libraries \ CMSIS \ CM3 \ CoreSupport CM3含义:Cortex-M3 目标路径:project/Start(新建)
工程添加必要文件
1.改名:Source Group改为Start 2.右键ADD Existing 3.打开Start,文件过滤器选择All files 4.添加启动文件,只能添加一个,根据FLASH的大小.判断: 小容量 ld :FLASH ≤32K 中容量 md :64K ≤ FLASH ≤ 128K 大容量 hd :256K ≤ FLASH 5.添加剩余.c与.h文件 //文件带有钥匙的是只读文件 6.添加文件路径 魔术棒——>C/C++——>include Paths——>三个点——>添加start
添加main
1.工程下新建User,存放main 2.Target1右击,Add Group添加组,New Group改名为User 3.右击,Add New添加新文件,添加C文件,名字为main,路径改为User 4.添加头文件,代码编写框,右击第一行,insert include file,选择头文件 5.加入main函数,int返回值,void参数 注意:最后一行必须是空行,否则会报警告
添加库函数
源路径: 1.库函数源文件:STM32入门教程资料 \ 固件库 \ STM32F10x_StdPeriph_Lib_V3.5.0 \ Libraries \ STM32F10x_StdPeriph_Driver \ src 2.库函数头文件:STM32入门教程资料 \ 固件库\ STM32F10x_StdPeriph_Lib_V3.5.0 \ Libraries \ STM32F10x_StdPeriph_Driver \ inc 目标路径(全部):project/Library(新建) 分类: misc:内核库函数 其他:内核外设库函数 工程添加库文件: 1.Target1右击,Add Group添加组,New Group改名为Library 2.右键ADD Existing,library,文件类型all,全选添加
配置头文件包含关系
源路径:STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 功能: conf:检测头文件包含关系,用来参数检查函数定义 it:存放中断函数 目标路径:porject/User 工程中添加:右键ADD Existing,library,文件类型all,添加conf、it.c、it、h
配置宏定义
1.右键打开头文件,找到8296-8298行条件编译 2.赋值ifdef后字符串,打开工程选项(魔法棒),选择C/C++,粘贴到Define
添加路径
打开工程选项(魔法棒),选择C/C++,include paths,添加User和Library路径
总结
1.建立工程文件夹,Keil中新建工程,选择型号 2.工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹 3.工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里 4.工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹 5.工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER USE:使用 STD:标准 PERIPH:外设 DRIVER:驱动 6.工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run 注意: 需要用的文件要复制到工程文件夹中,不要添加工程文件夹外文件,工程文件夹外文件改变位置,外面文件一旦挪动位置,工程里找不到文件,保证工程独立性
文件介绍
主动执行部分
startup
作用:程序执行最基本的文件 组成: 中断向量表 中断服务函数 程序入口:复位中断 注意: 在main函数前,有需要执行的东西
复位中断
复位中断函数工作: 1.调用SystemInit 2.调用main函数 system作用: 设置微控制器启动、初始化嵌入式闪存接口、锁相环、更新系统内核的时钟变量,仅在复位后需要调用
其他中断
功能:达到出发条件自动执行中断 定义位置:stm32fx_it ST官方建议:将自定义中断写入stm32f10x_it.c //在哪儿定义写到哪儿即可
被动执行部分
//相当于STM32资源 stm32f10x.h 外设寄存器描述 core_cm3.c/.h 内核寄存器描述 stm32f10x_conf.h 库函数配置 其他 库函数
调整字体
工具:扳手,configuration 字号调整: Colors&Fonts——>C/C++——>Font——>Courler New Colors&Fonts——>ASM——>Font——>Courler New 注释汉语: Editof——>Encoding——>UTF-8 缩进: Editof——>C/C++ Files——>Tab size
中间文件删除
keilkill.bat:批处理文件 作用:删除编译后Object中的中间文件
学习资源:
哔哩哔哩江科大自化协STM32视频资料