【STM32工程模板】库函数模板搭建

208 阅读2分钟

我正在参加「掘金·启航计划」 本文讲解的是一个库函数模板工程的搭建,我们做的基于库函数的开发基本上都是基于该模板。当然STM32开发不只是有库函数一个途径,还有寄存器、HAL库等方式。那本节主要讲的是关于库函数的模板搭建,需要相关文件的可以私信。下面进入正题。

Step1:准备项目目录。新建Template文件夹,文件夹结构如下图:在这里插入图片描述
CORE【内核驱动程序】 包含c文件,放置ST公司官方提供的,对arm内核和mcu系统的基础文件,一般不做修改。库函数模板中,CORE包含core_cm3.c/.h与启动文件(startup_stm32f10x_hd.s)
启动文件的选择:
在这里插入图片描述
OBJ【文件编译输出目录】 编译后生成的文件基本都在该目录下。设置输出文件存放路径的方法:(记得勾选create hex file)
在这里插入图片描述
STM32F10x_FWLIB【内部功能的基本函数库】 包含c文件,st公司提供,需要根据用户的需求对其进行增减。这部分的文件都是在做项目的时候参考的,比如说你要控制GPIO,那就需要将官方内部的GPIO函数库导进去,然后查看GPIO文件写关于GPIO的代码。
在这里插入图片描述
inc存放.h文件,src存放源程序.c文件。博主自己的如下:
在这里插入图片描述
USER【用户程序】 包含主程序。
SYSTEM【内部功能的驱动函数】 包括dealy.c和sys.c等,有用户编写的延时程序,也有st公司提供。
ex:HARDWARE【外部硬件的驱动程序】 用户根据自己需求编写的驱动文件,如led.c、key.c等。
Step2:项目配置。

  • 打开keil:project->new project->Template创建项目。
  • 配置Step1中的目录分组:
    在这里插入图片描述
    如USER分组,需要将USER文件夹下的所有.c文件都导入进去,方法图中已标出,其他雷同。
  • 魔术棒的配置
    需要打开C、C++选项卡,配置启动文件,在Define中定义:STM32F10X_HD,USE_STDPERIPH_DRIVER, 当然这里对应你之前选择的启动文件,如果是LD,那就要换成LD,如图中1处。还需要配置头文件路径(h文件路径),这里需要配置到h文件的当前文件夹。对于hex文件的生成,我们需要打开output选项卡,勾选Create Hex file。

Step3:项目开发。 如实现led闪烁的功能,主函数代码如下所示。编译运行,烧入开发板即可。

#include "stm32f10x.h"

void Delay(u32 count)
{
	u32 i=0;
	for(;i<count;i++);
}
int main(void)
{	
	GPIO_InitTypeDef  GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
	RCC_APB2Periph_GPIOE, ENABLE);	    
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;			    
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 	 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 
	GPIO_Init(GPIOB, &GPIO_InitStructure);			     
	GPIO_SetBits(GPIOB,GPIO_Pin_5);					
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	           
	GPIO_Init(GPIOE, &GPIO_InitStructure);	  	       
	GPIO_SetBits(GPIOE,GPIO_Pin_5); 			   
	while(1)
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		GPIO_SetBits(GPIOE,GPIO_Pin_5);
		Delay(3000000);
		GPIO_SetBits(GPIOB,GPIO_Pin_5);
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);
		Delay(3000000);
		}
}

【提醒】:上述讲解均是以STM32F103ZET6为例,其它开发板可能需要做小的修改。