- 打开keil5
- 新建一个工程文件
- 选择芯片型号
-
在新建好的工程目录下创建Start文件夹,用于存放启动文件
启动文件存放路径: STM32F10x_StdPeriph_Lib_V3.5.0 -> Libraries -> CMSIS -> CM3 -> DeviceSupport -> ST -> STM32F10x -> startup -> arm
-
复制stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h文件到Start文件夹下
-
添加内核寄存器的描述文件到Start文件夹
这是因为STM32是内核和内核外围的设备组成的,而且内核的寄存器描述和外围设备的描述文件不是在一起的。
STM32F10x_StdPeriph_Lib_V3.5.0 -> Libraries -> CMSIS -> CM3 -> CoreSupport
到此为止,工程的必要文件就复制完成了。
-
添加文件到Start组
首先添加启动文件,启动文件有很多个,我们只能添加其中一个。stm32f103c8t6添加的是md.s的启动文件。
然后是添加剩下的.c和.h文件
- 在工程选项里添加这个文件夹的头文件路径
-
测试工程是否可行
新建User文件夹,新建mian.c文件,编译。
到此,如果后续采用的是寄存器开发,就完成了工程的搭建。
- 如何通过配置寄存器完成点灯操作
只要配置三个寄存器就可以实现点灯
1、RCC的一个寄存器,用来使能GPIOC的时钟
2、第二个寄存器,配置PC13口的模式
3、第三个寄存器,端口输出数据寄存器
这样的方式的弊端是要查手册看寄存器的每一位,并且如果会影响到其他端口的原有配置,如果要做的不影响别的端口还需要做&=和|=的操作。
-
为工程添加库函数
新建文件夹Library用来存放库函数的.c和.h文件
找到库函数文件:STM32F10x_StdPeriph_Lib_V3.5.0 -> Libraries -> STM32F10x_StdPeriph_Driver -> src
找到库函数头文件:STM32F10x_StdPeriph_Lib_V3.5.0 -> Libraries -> STM32F10x_StdPeriph_Driver -> inc
在Library目录下粘贴
在keil中添加Library的全部文件
还要在User文件夹下添加三个文件,找到以下文件:STM32F10x_StdPeriph_Lib_V3.5.0 -> Project -> STM32F10x_StdPeriph_Template ->
最后还需要一个宏定义,
不要忘了头文件,把User和Library的也添加上
这样基于库函数的工程就建好了 -
库函数点灯
通过使用库函数,查看库函数的参数说明,补全函数参数
比如GPIO_Init()函数:
一个参数是GPIOx,另一个是结构体,这就需要定义一个结构体并补充完整了。结构体补充用ctrl+f查到结构体成员的定义,在设置对应的值。
-
启动文件选择