正点原子STM32F103ZET6学习笔记-新建库函数工程模板

STM32F10x系列官方固件包免费下载链接


新建STM32工程

步骤一:创建工程文件

1,新建工程目录temp

2,在工程目录temp下面新建四个文件夹

(1)USER:存放工程文件(template)、主函数文件main.c、以及包括system_stm32f10x.c等等。

(2)CORE:存放核心文件和启动文件。

(3)OBJ:存放编译过程文件以及hex文件。

(4)STM32F103:存放ST官方提供的库函数源码文件。

工程目录预览:

 3,将新建工程命名为template并保存在USER文件夹下,按图片步骤建立工程

 

 

 步骤二:导入stm32固件库中的文件

1,打开STM32F10x固件库文件(免费下载链接在文章最上面)

(1)定位到:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹复制到我们刚才建立的STM32F103文件夹下面。src存放的是固件库的.c文件,inc存放的是对应的.h 文件。
具体如下:
 

(2)定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下面,将文件core_cm3.c和文件core_cm3.h复制到CORE下面去 。然后定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a rm下面,将里面 startup_stm32f10x_hd.s文件复制到CORE下面。这里我们我之前已经解释了不同容量的芯片使用不同的启动文件,我们的芯片STM32F103ZET6是大容量芯片,所以选择这个启动文件。

具体如下:

(3)定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面,将里面的三个文件 stm32f10x.h,system_stm32f10x.csystem_stm32f10x.h,复制到我们的USER目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的4个文件 main.c,stm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h复制到USER目录下面。

效果如下:(如果有LIistings和Objects文件夹没有影响)

 步骤三:将前面所有的文件添加到工程中

1,在工程下加入三个文件夹USER,CORE,FYLIB

(1)右击Target1,选择 Manage Components,按图片将Target 1改为template,删除Source Group 1并新建USER,CORE,FWLIB三个文件夹,最后点击OK:

(2)向USER,CORE,FWLIB文件夹添加相应文件。
        1)右击template,选择 Manage Components,选中FWLIB,点击Add Files,定位到已有文件夹STM32F103\src下,将所有文件加入FWLIB(这里将所有文件加入FWLIB是为了后面方便后面使用)。
效果预览:

  

         2)用同样的方法,分别向USER和CORE文件夹添加相应文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的 时候文件类型为.c,也就是添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型All files才能看得到这个文件)USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c,最后点击OK。

效果如下: 

2,设置hex文件生成的位置,头文件路径以及宏定义

(1)设置hex生成位置:点击魔法棒,选择Output,点击Select Folder for Objects,定位在OBJ文件夹下(如果不设置Output,MDK5编译产生的文件将会存放在Listings和Objects文件夹中)。

(2)设置头文件路径以及宏定义全局变量:点击魔法棒,选择c/c++,点击Include Path右边的按钮,会弹出一个设置Path的窗口,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击 OK,回到c/c++界面后然后填写 “STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面。这里解释一下,如果你用的是中容量那么STM32F10X_HD修改为STM32F10X_MD,小容 量修改为STM32F10X_LD。然后点击 OK。

具体如下:

 

步骤四:修改主函数并生成hex文件

1,将USER下的main.c中的代码改为下面的代码(为正点原子提供的代码):

#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);	    //使用PE,PB端口时钟
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;			    //LED0-->PB.5端口设置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 	 //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //IO口速度为50Mhz
  GPIO_Init(GPIOB, &GPIO_InitStructure);			     //初始化GPIOB.5
  GPIO_SetBits(GPIOB,GPIO_Pin_5);					//PB.5输出高
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	            //LED1-->PE.5推挽输出
  GPIO_Init(GPIOE, &GPIO_InitStructure);	  	       //初始化GPIO
  GPIO_SetBits(GPIOE,GPIO_Pin_5); 			 //PE.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);
	}
}

2,生成hex文件

(1)点击魔术棒,进入配置菜单,选择Output。然后勾上下三个选项。其中Create HEX file是编译生成hex文件Browser Information是可以查看变量和函数定义。

(2)设置好上面的步骤后将hex文件用flymcu软件下载到单片机中可以观察到两个LED灯交替闪烁。

步骤五:添加SYSTEM文件

SYSTEM文件

1,按照步骤三,在工程中新建一个SYSTEM文件夹,并且将提供的SYSTEM文件中delay.c,sys.c,usart.c添加到工程文件夹SYSTEM中。

效果如下:

 2,根据步骤三2中设置头文件方式将SYSTEM文件夹下的子目录delay,sys,usart加入到Path中。

具体如下:

 到此新建工程模板已经设置好了,最后记得要保存所有文件,要不然是白忙活一场。

猜你喜欢

转载自blog.csdn.net/qq_63306482/article/details/126180744