STM32学习心得二:新建工程模板

记录一下,方便以后翻阅~
特点:参考正点原子教学视频,固件库模板/寄存器模板(原字体是共同部分,加粗是库函数模板步骤斜体是寄存器模板步骤)。
1)新建一个空文件夹(名字自定)用来存放今后开发某项目的所有开发程序,在该文件夹中,新建一个USER空文件夹(推荐用USER名);
2)MDK软件中,单击Project→New μVision Project新建一个工程,输入工程文件名,选择好芯片后点击OK;
在这里插入图片描述
在这里插入图片描述
3)在USER文件夹中,Listings和Objects两个文件夹用来存放编译过程产生的中间文件(为了跟MDK5.1之前版本兼容)。
新建CORE(核心文件和启动文件),OBJ(编译过程文件和hex文件),STM32F10x_FWLib(库函数源码文件)三个空文件夹(与USER文件夹并列)。
在这里插入图片描述
在这里插入图片描述
新建CORE(核心文件和启动文件)和OBJ(编译过程文件和hex文件)两个空文件夹(与USER文件夹并列);

4)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver里的src(存放固件库的.c文件),inc(存放对应的.h文件)两个文件夹复制到STM32F10x_FWLib文件夹里;
5)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport里的core_cm3.c和core_cm3.h复制到CORE文件夹里;
6)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm里的startup_stm32f10x_hd.s[1]文件复制到CORE文件夹里,此时CORE文件夹里有三个文件;
在这里插入图片描述
将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm里的startup_stm32f10x_hd.s文件复制到CORE文件夹里;

7)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x里的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h复制到USER文件夹里;
8)将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template里的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER文件夹里,此时USER文件夹里多了七个文件;
在这里插入图片描述

9)在MDK软件中,右键Target1,单击Manage Project Items…,在Project Items界面、Groups一栏,删除Source Group 1,新建USER,CORE,FWLIB,单击OK(这里也可以重命名Target1);
在这里插入图片描述
在MDK软件中,右键Target1,单击Manage Project Items…,在Project Items界面、Groups一栏,删除Source Group 1,新建USER,CORE单击OK(这里也可以重命名Target1);

10)在MDK软件中,回到之前的Manage Project Items界面,在Project Items界面,选中FWLIB,单击Add Files,选择STM32F10x_FWLib\src,选中里面所有的.c文件,单击Add(其实只需添加需要用的.c文件);
11) 选中CORE,单击Add Files,将CORE文件夹里的core_cm3.c和startup_stm32f10x_hd.s添加进来;
选中CORE,单击Add Files,将CORE文件夹里的startup_stm32f10x_hd.s[3]添加进来;
12)选中USER,单击Add Files,将USER文件夹里的main.c,stm32f10x_it.c和system_stm32f10x.c添加进来;
在MDK软件中,新建一个test.c文件(即主函数文件[2],名字可自定),保存在USER文件夹里,然后在Manage Project Items界面,Project Items选项,选中USER,将刚才新建的.c文件添加进来);
13)在MDK软件中,单击魔术棒,在Output选项里,勾选Create HEX File,单击Select Folder for Objects,选择OBJ文件夹(放弃将编译过程文件存放在Listings和Objects中);
在这里插入图片描述

在这里插入图片描述
14)在C/C++选项里,单击Include Paths右边的…,添加三个头文件目录,在Define里输入STM32F10X_HD,USE_STDPERIPH_DRIVER;

在这里插入图片描述
在这里插入图片描述
在C/C++选项里,在Define一栏里输入STM32F10X_HD;

15) 此时,工程模板已建立完成。接下来,添加ALIENTEK提供的公用代码。将SYSTEM文件夹复制到工程文件中(与USER文件夹并列),在MDK软件中,右键Target1,单击Manage Project
Items…,在Project Items界面、Groups一栏,新建SYSTEM,选中SYSTEM,单击Add Files,将SYSTEM文件夹里的sys.c,delay.c和usart.c添加进来,然后单击OK;
16)单击魔术棒,在C/C++选项里,单击Include Paths右边的…,添加SYSTEM文件夹里的三个头文件,新建工程模板最终完成。
备注:
[1] startup_stm32f10x_hd.s是一段和硬件相关的汇编代码,主要作用:1)堆栈(SP)的初始化;2)初始化程序计数器(PC);3)设置向量表异常事件的入口地址;4)调用Main函数。ST公司有三个文件,分别对应不同的STM32芯片:
startup_stm32f10x_ld.s对应FLASH≤32K的STM32芯片;
startup_stm32f10x_md.s对应64K≤FLASH≤128K的STM32芯片;
startup_stm32f10x_hd.s对应256K≤FLASH的STM32芯片。
[2]寄存器模板的主函数文件可以先这么写:```

#include “sys.h”
#include “usart.h”
#include “delay.h”

int main(void)
{
      u8 t=0;
      Stm32_Clock_Init(9);       //系统时钟设置
      delay_init(72);            //延时初始化
      uart_init(72,115200);       //串口初始化为115200
      while(1)
      {
           printf(“t:%d\r\n”,t);
           delay_ms(500);
           t++;
       }
}

[3]寄存器模板和库函数模板的startup_stm32f10x_hd.s区别在于,寄存器模板的需要注释三行代码:

;IMPORT  SystemInit
;LDR     R0, =SystemInit
;BLX     R0 
发布了24 篇原创文章 · 获赞 2 · 访问量 4131

猜你喜欢

转载自blog.csdn.net/Leisure_ksj/article/details/105034333