一、stm32的开发方式

  1. 基于寄存器(由于stm32较为复杂不推荐此方法)
  2. 基于标准库(寄存器封装较好)
  3. 基于HAL库(快速上手无法了解底层逻辑)
    本次学习将采用标准库的方式来学习

二、库函数

  1. 打开固件库
  2. Libraries中的就是库函数的文件
  3. Project是官方提供的示例(可以为使用库函数做参考)
  4. Utilities是测试电路文件

三、新建文件夹

1、建立启动文件夹

  • 打开Kiel 5,点击新建工程
  • 创建文件夹STM32 ——2-1 STM32工程模板,创建Project工程文件
  • 打开固件库(以下为需要的启动文件路径)STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
  • 将arm文件夹内的文件复制,并在工程模板文件夹内创建start文件夹粘贴
  • 在STM32F10x文件夹中存放了stm32f10.h和两个system文件,前者为STM32的外设寄存器描述文件(类似于51单片机的头文件),后者主要用于配置时钟。将他们复制到start文件夹中
  • 由于STM32是由内核和外围的设备组成,且不存放在一起,所以需要添加内核寄存器的描述文件,在固件库中按以下路径找到文件,并复制粘贴到start文件夹中
    STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport

2、添加启动文件

  • 选中source group1文件夹,点击文件夹前面的图标,更改名字为start文件夹,右击添加已经存在的文件,将原来start文件夹中的startup_stm32f10x_md.s,core_cm3.c,core_cm3.h,stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h文件添加其中(这些文件只读文件,无法修改其中的内容)
  • 点击魔法棒按钮,在c/c++中的Include Path中添加start文件夹(这样就可以保证头文件的路径)
  • 新建User文件夹,创建main.c文件
  • 工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER(使用库函数必须定义)
  • 写入一下代码
1
2
3
4
5
6
7
8
9
#include "stm32f10x.h"                  // Device header

int main(void)
{
while(1)
{

}
}

3、启动文件分类

缩写 释义 Flash容量 型号
LD_VL 小容量产品超值系列 16-32k STM32F100
MD_VL 中容量产品超值系列 64-128k STM32F100
HD_VL 大容量产品超值系列 256-512k STM32F100
LD 小容量产品 16-32k STM32F101/102/103
MD 中容量产品 64-128k STM32F101/102/103
HD 大容量产品 256-512k STM32F101/102/103
XL 加大容量产品 大于512k STM32F101/102/103
CL 互联型产品 - STM32F105/107

四、新建工程各文件作用

  • start_xx.s:复位中断,相当于程序的入口,调用Systeminit,这个函数定义在system_xx.c/.h里面,设置微控制器的启动,初始化嵌入式闪存接口、锁相环、更新系统内核的时钟变量。(在main函数启动之前全部执行)。还有其他中断的调用。
  • stm32f10_it.c/.h:定义中断处理函数
  • stm32f10x.h:外设寄存器描述
  • core_cm3.c/.h:内核寄存器描述
  • misc.c/.h,stm32f10x_adc.c/.h···:库函数
  • stm32f10x_conf.h:库函数配置