STM32——新建基于固件库的工程模板

基于ST官方推出的固件库,我们能够更加方便地使用stm32。那么为了便于今后的开发工程,创建一个工程模板,可以避免浪费很多重复的时间。本次演示如何建立STM32F103VET6的工程模板供大家参考。在文章最后我也会分享一些自己已经建立好的工程模板,包括stm32f103ret6/vet6、stm32f407zet6,也欢迎大家继续补充分享。


目录

一、新建工程文件夹

二、创建工程

 三、添加文件

 我们先要下载官方的固件库包STM32F10x_StdPeriph_Lib_V3.5.0(我会放在文章最后)​编辑

1.CORE文件夹 

2.STM32F10x_FWLib文件 

3. OBJ文件

4.USER文件夹 

 5.SYSTEM文件夹

四、在Keil中进行配置 

1.添加文件到工程 

2.配置工程环境

3.替换一下main.c文件 


一、新建工程文件夹

首先,我们要新建一个文件夹存放我们的工程模板(我这里命名为STM32F103VET6),并在该文件夹下创建5个子文件夹,一般我会命名为USEROBJSTM32F10x_FWLibSYSTEMCORE

二、创建工程

 打开Keil,点击Project,再点击New μVison Project 


定位到刚刚创建的文件STM32F103VET6-USER,并命名为Project

选择对应芯片的型号(比如此时我就应该选择STM32F103VE),再点击OK
当然在此之前,你需要先下载对应芯片的固件库,在我之前的帖子里有f1和f4的固件库Keil5同时兼容C51和stm32的方法(win11实测有效)


出现以下页面,点击OK

此时,你应该初步创建了工程,你能看到keil中你创建的工程以及USER文件夹如下的内容
Listings 和 Objects文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件,我们可以将其删除

 三、添加文件

 我们先要下载官方的固件库包STM32F10x_StdPeriph_Lib_V3.5.0(我会放在文章最后)

1.CORE文件夹 

CORE 用来存放核心文件和启动文件

(1)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的文件core_cm3.ccore_cm3.h复制到CORE文件夹中
(2)将
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\starturm中的文件startup_stm32f10x_hd.s复制到CORE文件夹中(注意不同的芯片对应选择不同的启动文件,以下方法便于理解启动文件的选择,如vet6的Flash大于128k,我就选择hd.s,如果还是不确定可以查阅资料)
cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH大于128

2.STM32F10x_FWLib文件 

STM32F10x_FWLib 文件夹用来存放 ST 官方提供的库函数源码文件 

(1)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver中的src,inc 文件夹复制到STM32F10x_FWLib文件夹中(src 存放的是固件库的.c 文件,inc 存放的是对应的.h 文件)

3. OBJ文件

OBJ文件是用来存放编译过程文件以及 hex 文件
 
此文件夹的内容我们将在下一步进行配置,大家不要着急

4.USER文件夹 

USER文件存放工程代码文件

(1)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的三个文件stm32f10x.hsystem_stm32f10x.csystem_stm32f10x.h复制到USER文件夹中
(2)将
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template中的四个文件main.cstm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h复制到USER文件夹中

 5.SYSTEM文件夹

 SYSTEM文件夹存放一些已经写好的例程共用代码(大家可以从例程或我最后的工程模板中获取)

(1)将SYSTEM文件夹中的sysusartdelay三个文件夹复制到自己的SYSTEM文件夹中

四、在Keil中进行配置 

1.添加文件到工程 

(1)右键点击Target 1,再点击Manage Project ITems...,再点击删除中间框中的Source Group 1

(2)新建四个Group
 (3)点击USER,再点击Add Files...,将对应文件夹的三个.c文件添加进来

(4)点击CORE,再点击Add Files...,将对应文件下的两个.c\.s文件添加进来
       (.s文件需要在添加文件时选择所有文件类型可见)

(5)点击FWLIB,再点击Add Files...,打开对应文件夹的src文件夹将所有.c文件添加进来

(6)点击SYSTEM,再点击Add Files...,依次打开对应文件夹的三个子文件夹delay、sys、usart,将其中的delay.c、sys.c、usart.c三个文件添加进来

2.配置工程环境

(1)点击工具栏的“魔法棒”(Options for Target...

(2)点击上方的Output,勾选Create HEX File

再点击Select Folder for Objects...,并定位到OBJ文件夹

(3)点击上方的C/C++,在Define后面的框中填STM32F10X_HD,USE_STDPERIPH_DRIVER           (填入的内容和我们的启动文件有关,如果我们用MD,那就把HD换成MD)

再在下方Include Paths中添加.h文件所在的上一级文件夹

3.替换一下main.c文件 

如果使用我建好的工程的main.c,则不需要这一步,使用固件库包中的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); //使能 PB,PE 端口时钟
  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);
  }
}

 到此为止,一个工程模板就建立好了,我们点击编译,显示没有问题就ok啦

  • 26
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是cc你是谁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值