想学习单片机的同学看看,STM32固件库的MDK5工程建立并点亮LED

我是个大学老师,以后会持续在这个平台输出关于单片机和嵌入式的内容干货,希望大家多多支持~

学习目标

·从无到有创建一个STM32的Keil工程

·点亮板子上的一个LED

工程创建

下载固件库

固件库STM32F10x_StdPeriph_Lib_V3.5.0:相关内容可以私我。

解压后如下图所示:

d2f46aa961bb63ad645b51c15a47658e.png

其中stm32f10x_stdperiph_lib_um.chm为库的帮助文档。

创建STM32工程

·打开MDK5,创建 New uVision Project。

78e4dd535b70dc2d48bf5a50d3edf0eb.png

·将工程文件保存至事先创建好的目录下:

因为我用的就是正点原子的开发板,所以习惯将工程文件放在子目录USER下面

f36a415ddb837eb2dc632eca3ba07ebc.png

·选择使用的芯片型号

我的板子使用的STM32F103RTC6,所以在这里我们选择STMicroelectronics-> STM32F1 Series->STM32F103->STM32F103RCT6
注意:一定要安装对应的器件pack,本教程使用的是Keil.STM32F1xx_DFP.1.0.5.pack安装包。

b096999354f3932d1dd17408f0897dbb.png

点击确定之后,出现的Manage Run-Time Environment对话框,直接点击Cancel即可,得到如下所示界面:

88b438510245132c76217ee0700d2f08.png

删除如下框选的Listings和Objects文件夹

645e121df18a6df0488e5e430be64e2b.png

Template文件夹下面新建三个文件夹CORE,OBJ以及STM32F10x_FWLib。
其中:
CORE用来存放核心文件和启动文件;
OBJ是用来存放编译过程文件以及 hex文件;
STM32F10x_FWLib文件夹用来存放 ST官方提供的库函数源码文件
USER目录用来存放工程文件外,还用来存放main.c以及system_stm32f10x.c等文件。
将之前准备好的固件库,在STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下面,将目录下面的 src,inc文件夹 copy到我们刚才建立的 STM32F10x_FWLib文件夹下面。

8070f9dd12db8c3f1180d1f0fd6f5d81.png

将固件库包里面相关的启动文件复制到我们的工程目录 CORE之下。
定位到目录 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\arm下面,将里面 startup_stm32f10x_hd.s文件复制到CORE下面。

ce61c9201ed1a2919d57262175be4491.png

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

dae3a3be700240295373f59e8b150737.png

将前面步骤中添加的文件添加到我们的工程目录下面。

2ccdf8813d258a9352f97519f1f7400e.png

添加完毕之后,工程目录结构如下所示:

8369501990557fe44064d27d06748a20.png

设置编译中间文件,编译后文件存放的目录

ba8bfcfc59cd34007c07a48a8c6ea2bd.png

设置头文件所在目录

ae12be821be1f84af2e5d82ccd09a207.png

配置工程所需要的宏定义:STM32F10X_HD,USE_STDPERIPH_DRIVER

94727a70bf568d4a8cb1cb0c6931acf0.png

设置编译输出文件格式

1292bea00033f325ba5889e280ab7b55.png

打开工程USER下面的main.c文件,编写简单测试代码,并编译。
我们这里使用PC7引脚控制一个LED周期性的亮灭。

97766c001f6f6f0462b51847421118d4.png

eded306e7c26a97504fb7f9a803aebed.png

#include"stm32f10x.h" voidDelay(u32count){

u32i=0;

for(;i<count;i++);}

intmain(void){

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//LED1-->PC.7端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO口速度为&nbsp;50MHz GPIO_Init(GPIOC,&GPIO_InitStructure);//根据设定参数初始化&nbsp;GPIOA.8 GPIO_SetBits(GPIOC,GPIO_Pin_7);//PC.7输出高

while(1)

{

GPIO_ResetBits(GPIOC,GPIO_Pin_7);

Delay(3000000);

GPIO_SetBits(GPIOC,GPIO_Pin_7);

Delay(3000000);

}}

下载程序

安装JLINK驱动
Setup_JLink_V512.exe
配置SW下载模式

2b1fb1230b7de28e2480d7a3b3cd50cd.png

·下载程序

0f570000ebc13def946dbae67ef0026d.png

程序下载完毕,重新给板子上电,发现与PC7相连的LED不断闪烁。
到此,整个STM32的工程创建完毕。

我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~简介里也有。

猜你喜欢

转载自blog.csdn.net/danpianji777/article/details/123994335