从零开始学习STM32(一)—— 新建工程模板

从零开始学习STM32(一)—— 新建工程模板

前言

从零开始学习STM32系列将由浅入深,和大家一起走进STM32的世界。

本系列的学习是基于正点原子的 ALIENTEK MiniSTM32 V3.0 开发板,miniSTM32开发板已经具备了大多数常用的功能,引脚数量始终,很适合初学者学习。

本篇作为该系列的第一章,将向大家介绍如何新建一个工程模板。工程模板建立的步骤较为反复,少了任何一个步骤都有可能导致打量编译错误,还请大家仔细认真的阅读。

准备工作

软件下载

STM32的开发软件为 Keil uvision5 MDK(以下将简称MDK5)
Keil uvision5 MDK 软件安装及教程
提取码:tnrj

必要文件下载

在 MDK5 安装完成后,要让 MDK5 支持 STM32F103 的开发,我们还需要安装 STM32F1的器件支持包:Keil.STM32F1xx_DFP.2.2.0.pack(STM32F1 的器件包)
提取码:okoj

还有建立工程时要用的文件:
STM32F10x_StdPeriph_Lib_V3.5.0
提取码:ytel

因为 ALIENTEK MiniSTM32 开发板所使用的 STM32 型号为STM32F103RCT6,所以在这里我们选择 STMicroelectronics→STM32F1Series→STM32F103→STM32F103RCT6(如果使用的是其他系列的芯片,选择相应的型号就可以了,特别注意:一定要安装对应的器件 pack 才会显
示这些内容哦!!,如果没得选择,请关闭 MDK,然后安装STM32F1的器件支持包

新建工程

准备就绪后我们就可以开始建立工程啦!

1.新建一个工程文件夹,并在该文件夹中新建一个子文件夹(名字自己爱取啥就取啥,父文件夹我命名为first class,子文件夹为USER)
在这里插入图片描述

2.打开菜单栏中的项目
在这里插入图片描述
3. 选择新uVision项目
在这里插入图片描述
4.选择我们新建的子文件夹,保存工程

5.接着会弹出窗口
在这里插入图片描述
mini板用的是STM32F103RTC6芯片,所以选择SYMicroelectronics——STM32F1 Series——STM32F103——STM32F103RC,然后点击OK。
在这里插入图片描述
紧接着会弹出下面的串口,取消或×掉就好了
在这里插入图片描述
6.到了这一步,框架算是搭好了,接下来就是加入各种文件让他能够正常运行。首先,在父文件夹first class中再新建几个文件(名字任取,自己清楚就好了)。
在这里插入图片描述
7.打开文件夹STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver,将其中的文件inc和src复制到first class\STM32f10x_FWLIB文件夹中。
在这里插入图片描述
在这里插入图片描述
7.打开文件夹STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport中的两个文件复制到first class\CORE文件夹中。
在这里插入图片描述
在这里插入图片描述
8.打开文件夹STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\STSTM32f10x\startup\arm文件夹中的startup_stm32f10x_hd文件复制到first class\CORE文件夹中。
在这里插入图片描述
在这里插入图片描述
9.打开文件夹STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\STSTM32f10x,将stm32f10x、system_stm32f10x、system_stm32f10x文件复制到first class\USER文件夹中。
在这里插入图片描述
在这里插入图片描述
10.打开文件夹STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template,将图中的四个文件复制到first class\USER文件夹中
在这里插入图片描述
在这里插入图片描述
11.右击Target,选择Manage Project Items,更改或添加相关文件
在这里插入图片描述
在这里插入图片描述
12.接着我们将相关文件添加到相应的组中,图示为FWLIB组添加文件的步骤。
打开文件夹first class\STM32f10x_FWLIB\src,将其中的所有文件添加到FWLIB组中
在这里插入图片描述
在这里插入图片描述
下图展示的是将first class\USER文件夹中的三个.c文件添加到USER组中
在这里插入图片描述
CORE组文件的添加有些不同,打开first class\CORE文件夹,先将文件类型改为All files,再将箭头所指的两个文件添加到CORE组中。
在这里插入图片描述
13.因为在编译时会产生大量文件,所以我们要进行一些设置。
如图,点击魔术棒。
在这里插入图片描述
点击Output选项,将图示的三个选项全部勾选,特别注意,不勾选Create HEX File选项将无法生成hex文件。
在这里插入图片描述
点击Select Folder For Objects可以更改编译时产生的文件的存储位置。(我选的时first class\OBJ文件夹)
在这里插入图片描述
在这里插入图片描述
14.再次点开魔术棒,点击选项C/C++,选择Include Paths,将所需文件添加到该选项中
在这里插入图片描述
所需添加的文件有
在这里插入图片描述

在这里插入图片描述
原子哥还为我们提供了几个常用的函数,我们也可以按照这个步骤把它添加到工程里:SYSTEM
提取码:mjoq

添好之后是这样的
在这里插入图片描述

特别注意,如果少了第十四步,程序将无法编译成功,并且,我们以后编写的头文件也要添加到这里。还有就是,只能添加最后一级的子文件夹
例如,first class\STM32f10x_FWLIB文件是无法直接添加的,first class\STM32f10x_FWLIB\inc可添加成功。

15.再次点开魔术棒,点击选项C/C++,在Define框中添加宏定义"STM32F10X_HD,USE_STDPERIPH_DRIVER"。点击OK就可以了。
在这里插入图片描述

特别注意,宏定义写错将导致编译失败。还有,每次添加完文件或修改参数都要点击确认,否则,数据不会更改。

16.做到这一步,编译时任会有一个错误。那是因为主函数已经编写好了,但是不是我们想要的程序,里面运用到了我们没有的头文件。全部删除,重新写一个程序就好了。
在这里插入图片描述
测试代码

#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(5000000);
		GPIO_SetBits(GPIOA,GPIO_Pin_8);
		GPIO_ResetBits(GPIOD,GPIO_Pin_2);
		Delay(5000000);
	}
 }

点击编译
在这里插入图片描述
至此,新建工程的所有步骤全部完成。分享一个技巧,以后要编写工程直接复制这个模板就好了。

结语

新建工程项目步骤繁琐,还希望大家认真仔细,因为少了任何一个步骤都有可能导致工程建立失败。找到哪里出错可能要花很多时间。这时我踩过的大坑啊!!!!祝大家一次就成功!!!!

这是我在CSDN上发布的第一篇文章,有什么不足的地方还请大家斧正。

最后,希望大家点赞,收藏加关注!!!!

多谢大家的支持!!!!

  • 28
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值