使用固件库编程,首先创建一个工程模板:
1.创建一个文件夹:
例如,叫:Fwlib-Template,然后向其中添加文件。
需要注意的是keil5对中文的支持不太好,所有文件夹只能是英文字符,如果起了中文名字,那么在编译和使用keil5的编辑窗时会产生一些莫名其妙的错误,例如:结构体成员不能自动显示等。
2.添加四个文件夹:
Project:将来创建的工程文件保存在这里
Libraries:保存固件库中的 .h 文件和 .c 文件
User:用户自己编写的文件,包括主文件main.c 和 板级支持包
Doc:关于该工程的说明文档
3.向Libraries中添加固件库文件
找到官方提供的固件库,打开其中的Libraries文件夹,将其中的CMSIS文件夹拷贝到自己的Libraries目录下
CMSIS目录中保存着与STM32系统内核相关的各种文件
拷贝到自己建的Libraries目录中
4.为了防止目录嵌套太深,需要将不使用的文件删除,并对目录做一些裁剪。
进入CMSIS文件加,将不需要的Documentation和License.doc删除
进入CMSIS->CM3->CoreSupport文件夹,将两个内核支持文件拷贝到CMSIS目录下,并将已空的CoreSupport目录删除
进入CMSIS->CM3->DeviceSupport->ST->STM32F10x文件夹,将其中的文件拷贝到CMSIS目录中,并将已空的CM3目录删除
拷贝好的文件如下:
其中core_cm3.c与core_cm3.h是内核相关的文件
system_stm32f10x.c与system_stm32f10x.h是与设置系统时钟频率相关的文件
stm32f10x.h是非常关键的头文件,相当于51单片机中的reg51.h,其中定义了所有STM32F10x的寄存器映射
startup文件夹中包含着启动文件,根据不同的编译器,启动文件有所不同,如果使用的是keil5,就保留arm,其他的文件夹用不着,可以删掉。
5.将固件库Libraries文件夹中的STM32F10x_StdPeriph_Driver也拷贝到自己的Libraries文件夹中
这些文件提供STM32各种外设的支持,比如GPIO,USART,SPI等。
6.在Doc文件夹中添加说明文档。
例如readme.txt。
7.在User文件夹中添加文件:
然后从官方提供的例程中拷贝如下文件:
其中main.c 是用户的主文件
stm32f10x_conf.h 是管理其它头文件的一个文件
system_stm32f10x.c 是与系统启动时时钟频率相关的文件,这个文件已经添加过了,不用再拷贝
stm32f10x_it.c 与 stm32f10x.h 是与中断有关的文件