新建固件库的工程模板的教程

目录

前言

一.开发环境

二.固件库

三.具体步骤 

1.创建文件夹

2.复制固件库文件夹

2.1STM32F10x_FWLIB文件夹下的配置

 2.2CORE文件夹下的配置

2.3USER文件夹下的配置

3. 在keil中配置

3.1确定路径,选择文件夹

 3.2将源文件添加到工程里

 3.2.1将源文件添加到USER文件夹中

3.2.2将源文件添加到FWLIB文件夹下

3.2.3将源文件添加到CORE文件夹下

 3.3将头文件添加到Path

3.4配置输出路径

3.5编译并解决报错

3.5.1没有定义宏定义

3.5.2main主程序错误

 总结


前言

这篇是根据教学视频《原子教你玩STM32》第五讲写出。

一.开发环境

本来Keil下载的是最新版,结果发现给的教学代码工程不能正常编译,又选择的是公司给的版本,这真的很奇怪。教学视频里提到的版本是下图,反正用公司给的可以正常编译,先凑活用吧,后面再研究研究。

软件安装包链接:https://pan.baidu.com/s/1zx14GFNEdcskZ_CUA_IOzw 
提取码:3232

二.固件库

固件库分享链接:https://pan.baidu.com/s/1Y_S8ro4UQVG3bLP3nXLN4w 
提取码:3232

三.具体步骤 

1.创建文件夹

新建 Template工程,在Template目录下新建三个文件夹CORE,OBJ,以及STM32F10x_FWLib。

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

OBJ文件夹用来存放编译过程文件以及hex文件。

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

USER文件夹除了用来存放工程文件外,还用来存放main.c主函数文件,以及其他,包括system_stm32f10x.c等等。

2.复制固件库文件夹

将目标文件夹复制粘贴到目标路径下。

2.1STM32F10x_FWLIB文件夹下的配置

(1)目标文件夹:固件库文件夹STM32F10x_StdPeriph_Lib_V3.5.0(前面有分享链接,提取码3232)➡Libraries➡STM32F10x_StdPeriph_Driver➡inc和src

 目标路径:Template➡STM32F_FWLIB

 2.2CORE文件夹下的配置

(1) 目标文件夹:固件库文件夹➡Libraries➡CMSIS➡CM3➡CoreSupport➡core_crm.c和core_crm3.h

 目标路径:Template➡CORE

(2)目标文件: 固件库文件夹➡Libraries➡CMSIS➡CM3➡DeviceSupport➡ST➡STM32F10x➡startup➡arm➡startup_stm32f10x_hd.s(战舰开发板选这个)或者startup_stm32f10x_md.s(迷你开发板选这个)

 目标路径:Template➡CORE

2.3USER文件夹下的配置

(1)目标文件:固件库文件夹➡Project➡STM32F10x_StdPeriph_Template➡main.c和stm32f10x_conf.h和stm32f10x_it.c和stm32f10x_it.h和system_stm32f10x.c,一共五个。

目标路径:Template➡USER

(2)目标文件:固件库文件夹➡Libraries➡CMSIS➡CM3➡DeviceSupport➡ST➡STM32F10x➡stm32f10x_it.h和system_stm32f10x.c和system_stm32f10x.h

 目标路径:Template➡USER

这一步在复制过程中会有下面提示,跳过和替换都可以,没有影响。 

3. 在keil中配置

3.1确定路径,选择文件夹

Project➡New Project➡选择之前创建的文件夹Template➡USERA➡选择芯片STM32F103ZE(战舰版选择这个)或者STM32F103RB(MINI版选择这个)

 3.2将源文件添加到工程里

选中Target右击➡点击Manage Project Items➡自定义➡ok

正确添加后目录如下:

 3.2.1将源文件添加到USER文件夹中

还是刚才的步骤,打开Manage Project Items,点击USER,添加需要的文件,具体步骤如下:

 在USER文件夹下正确添加源文件的界面如下:

3.2.2将源文件添加到FWLIB文件夹下

添加文件:打开Template➡STM32F10x_FWLIB➡src➡Ctrl+A全选➡添加Add➡OK

 在FWLIB文件夹下正确添加源文件的界面如下:

3.2.3将源文件添加到CORE文件夹下

添加文件:打开Template➡CORE➡选择添加的文件(将文件类型默认的.c改成All files)➡OK

(战舰开发板需要将startup_stm32f10x_md.s文件移除,mini开发板需要将startup_stm32f10x_md.s文件移除)

 在CORE文件夹下正确添加源文件的界面如下: 

 3.3将头文件添加到Path

keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path 一定要定位到最后一级子目录!!!

 将存放了.h头文件的目录全部都加进Include Paths,注意,FWLIB里添加的是inc文件!!!

3.4配置输出路径

创建HEX文件要点√➡存放文件的路径选择OBJ,具体步骤如下:

3.5编译并解决报错

编译工程,可以看到有很多错误,这是因为3.5版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。

3.5.1没有定义宏定义

解决办法具体如下,其中步骤②的那串字符串是:“STM32F10X_HD,USE_STDPERIPH_DRIVER”(战舰版选择这串)和“STM32F10X_MD,USE_STDPERIPH_DRIVER”(MINI版选择这串字符串)

(补充:如果你用的是中容量那么STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK。 因为我们的 miniSTm32 开发板是大容量,所以要选择“STM32F10X_HD”。) 

3.5.2main主程序错误
将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_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);	 //使能PA,PD端口时钟
	
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //LED0-->PA.8 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化GPIOA.8
  GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //PA.8 输出高

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	    		 //LED1-->PD.2 端口配置, 推挽输出
  GPIO_Init(GPIOD, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
  GPIO_SetBits(GPIOD,GPIO_Pin_2); 						 //PD.2 输出高 	  
  while(1)
	{
	    GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	    GPIO_SetBits(GPIOD,GPIO_Pin_2);
		Delay(3000000);
		GPIO_SetBits(GPIOA,GPIO_Pin_8);
		GPIO_ResetBits(GPIOD,GPIO_Pin_2);
		Delay(3000000);
	}
 }

解决以上两个问题后再次进行编译,正确编译的界面如下:

 总结

代码一直报错真的会心烦!

教学视频链接:https://pan.baidu.com/s/185Y5AN0NZF6ZC76QKoAT1g 
提取码:3232

新建工程的目录和路径其实都可以自定义,本篇是关于视频《新建基于V3.5创建工程库模板》的记录,如果用这种方式看起来会稍微清爽些,后面再抓紧时间去学习下例程吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值