【STM32】库函数开发项目模板

发布时间 2023-03-23 17:09:06作者: fau152

1. 下载固件库

官方网址:https://www.st.com

工具与软件 -> 嵌入式软件 -> 安全微控制器软件 -> 微控制器软件 -> STM32微控制器软件 -> STM32标准外设软件库

直达链接:https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries.html

2. 创建工程

  1. 新建一个文件夹,作为项目根目录(命名随意)。

  2. 在该文件夹下新建3个文件夹:Libraries、User、Obj(文件夹命名可以任意,但不能使用中文或特殊符号)

    • Obj 文件夹:用于存放编译产生的 c/汇编/链接的列表清单、调试信息、 hex文件、预览信息、封装库等文件。

    • User 文件夹:用于存放用户编写的 main.c、stm32f10x.h 头文件stm32f10x_conf.h配置文件、stm32f10x it.c和stm32f10x it.h中断函数文件

      image-20230323074939877

    • Libraries 文件夹:用于存放 CMSIS 标准和STM32 外设驱动文件。在此文件夹下新建CMSIS和STM32F10x_StdPeriph_Driver文件夹:

      • CMSIS:存放一些CMSIS标准文件和启动文件

        image-20230323075034681

      • STM32F10x_StdPeriph_Driver:用于存放STM32外设驱动文件,直接从固件库中复制所有的外设驱动头文件和源文件过来。

        image-20230323075103321

      最终整体文件结构如图:

      image-20230323075551106

  3. 新建Keil工程

    • 新建项目:项目名随意(必须是英文),保存在第2步创建的根目录下。
    • 选择CPU:选择与开发板对应的芯片型号(如果没有,需要先安装芯片包),选好之后会弹出在线添加固件库文件的界面,我们选择手动添加,直接关闭即可。
  4. 管理工程目录组

    image-20230323081940128

    • User:存放User文件夹下的源文件
    • Startup:存放STM32启动文件(startup_stm32f10x_hd.s)
    • StdPeriph_Driver:存放外设驱动源文件
    • CMSIS:存放CMSIS标准文件,比如系统总线时钟等初始化源文件。

  5. 配置魔术棒选项卡

    • Target选项卡:勾选微库Use MicroLib,不勾选的话,重定向输出实验将会出现奇怪的现象。

    • Output选项卡:(1)将输出文件夹定位到Obj文件夹; (2)勾选Create HEX File

    • Listing选项卡:将输出文件夹定位到Obj

    • C/C++选项卡:(1)因为使用库函数开发,需要对处理器类型和库进行宏定义

      USE_STDPERIPH_DRIVER,STM32F10X_HD

      (2)配置头文件包含路径

    • Debug选项卡:使用普中的ARM仿真器的配置

      (1)选择CMSIS-DAP仿真器

      (2)连接仿真器,选择Settings,选择sw模式下载及调试

      (3)选择芯片型号,勾选reset and run当程序下载完成之后自动复位运行。

3. 编写测试代码

#include "stm32f10x.h"

int main(){
	while(1)
	{
	
	}
}

在main.c中写入如下代码,并进行编译,如果提示0 Error(s), 0 Warning(s)表示项目创建没有问题。

3.1 keil5几个无关紧要的警告

  1. 源文件结尾没有回车:warning: #1-D: last line of file ends without a newline
  2. 定义但未引用:warning: #177-D: variable "svchao_var_1" was declared but never referenced
  3. 定义但未引用:warning: #550-D: variable "svchao_var_2" was set but never used

抑制警告:

打开魔术棒中的C/C++选项卡,在Misc Controls中输入:

--diag_suppress=1 					即关闭 #1-D的警告
--diag_suppress=1,177,550 			即关闭 1, 177, 550的警告.