【STM32】标准库 菜鸟入门教程(2)新建工程与点灯

工程模板以及点灯源代码在以下链接中,诸位先下载解压。

链接:https://pan.baidu.com/s/1JmHzZr5sD94D3vVA7YYq2Q 
提取码:0323

/****建立工程的几点教训。*****/

1.添加文件的时候要添加完全

2.在三个箱子里面可以快速添加

3.STLINK配置

 4.添加路径以及写上这行话 USE_STDPERIPH_DRIVER

5.最后要留一个空白行

目录

【Start文件初始化】

【main.c初始化】

【常用操作】

①导入新建文件夹

②更改字体大小:

③常用设置

【点灯】

步骤1:进行时钟配置

步骤2:端口模式配置

步骤3:控制端口的高低电平


【Start文件初始化】

(工程模板中已经建好,以下是详细说明,可略过)

下载完成后,打开工程模板文件夹,电点击红色框Project进入keil5中进行编辑,该工程模板可以作为往后各个工程的初始模板,省去初始化的时间。但需要注意的是,对于不同型号的单片机,我们有一些文件的选择需要变动,这个在下文有详解。因此该工程模板仅适用于型号为STM32F103。Flash容量为64~128K的单片机。

我们点击目录中Start,可以看到Start文件夹下有诸多的文件,每个文件上方都有一个钥匙的小图标,意思是只读文件,其实在Start下的文件并不是固定不变的,我们需要根据需求来选择对应的文件,我们右键Start,选择ADD Existing Files to Group ‘Start’(添加存在的文件进入分组‘Start’),然后选择工程模板文件夹中的Start文件,文件类型选择所有文件,我们可以看到如下图所示

其中红色框为必选内容,蓝色框的选择则遵循如下表规则:

注意看蓝色框中文件名的后缀,可以与下表中的缩写相对应,而每一种则对应不同的单片机型号与闪存容量,根据我们要使用的单片机参数李艾选择对应的文件即可。(按住CTRL后再用鼠标左键选择则可以进行多选)

缩写

释义

Flash容量

型号

LD_VL

小容量产品超值系列

16~32K

STM32F100

MD_VL

中容量产品超值系列

64~128K

STM32F100

HD_VL

大容量产品超值系列

256~512K

STM32F100

LD

小容量产品

16~32K

STM32F101/102/103

MD

中容量产品

64~128K

STM32F101/102/103

HD

大容量产品

256~512K

STM32F101/102/103

XL

加大容量产品

大于512K

STM32F101/102/103

CL

互联型产品

-

STM32F105/107

STMCU中文官网此网址可以下载相应的标准库!

【main.c初始化】

(工程模板中已经建好,以下是详细说明,可略过)

我们编译程序基本都是在User文件夹中的main.c中进行,我们点击main.c进行编辑。

先右键选择insert ‘#include file’——>stm32F10x.h进行头文件编写

 然后输入代码行:

 编译运行即可。

【常用操作】

①导入新建文件夹

我们先打开工程模板的文件夹,在文件夹之中右键新建文件夹,重命名为相关名字以便管理,这里我姑且命名为example。

在打开工程模板进入keil5中,右键target1选择Add group,这是会出现一个名为new group的分组,我们左键重命名为刚才在工程模板文件夹中建立的文件夹。

            

而后右键选择Add existing files......,再在目录中选择到刚才新建的文件夹example点击ADD即可。

在添加完成文件夹之后,注意要进行如下操作:

 而后在弹出的界面中寻找到刚才新建的文件夹选择添加即可。每一次在添加了新的文件夹之后都要进行这步操作,避免在工作时无法寻找到文件中的.h文件导致运行错误。

 通常我们只需要修改User中的文件即可满足大部分需求,因此我们为了方便管理文件,可以通过如下方式进行文件夹的换位:

2号框框中可以把文件拖动进行换位,一般我们把需要编辑的文件User放在最后。

 在编辑代码时,如果没有代码提示功能,可以通过如下路径更改:

 ②更改字体大小:

 ③常用设置

为了防止乱码,我们还需要进行如下123步的操作,其中4为调整缩进符号Tab的缩进位数。

 设置ST-LINK下载后,勾选Rset and run,作用是我们在下载完程序后会马上复位并且执行,不用再手动按下复位按钮。

【点灯】

步骤1:进行时钟配置

输入RCC_APB2PeriphClockCmd();

右键此函数,选择“Go To Definition Of ‘ RCC_APB2PeriphClockCmd’跳转到函数说明

 1为此函数的简介:使能或者不能高速时钟,2为第一个参数的说明:指定APB2外设门控时钟,可以选择@arg右侧所有参数之一。3为第二个参数说明:设置新的状态,使能(ENABLE)或者不能(DISABLE)。

我们暂且选用PC13口作为输出端口作为测试,因此第一个参数选用@arg中的RCC_APB2Periph_GPIOC,第二个参数选用ENABLE,即把GPIOC端口的时钟开启。

步骤2:端口模式配置

在工程代码中输入GPIO_Init();

依旧是右键跳转查看函数的使用方法。

方框1简介:根据特定的GPIO_InitStruct中特定的参数配置GPIO口。

方框2:GPIO_Init();括号中的第一个参数,可以选择GPIOA~GPIOG。

方框3:GPIO_Init();括号中的第二个参数为GPIO_InitStruct:指向包含指定GPIO外设的配置信息GPIO_InitTypeDef结构体的指针。

我们选用的是PC13口,故而第一个参数自然选择GPIOC。

第二个参数要求是一个指向结构体的指针,这个指针要求包含GPIO口的一些相关信息。

故而括号中的第二个参数可以填写指向结构体GPIO_InitStruct的指针:&GPIO_InitStruct.

在此之前我们需要定义结构体GPIO_InitStruct,使用GPIO_InitTypeDef  GPIO_InitStruct;进行定义。

再者,这个结构体需要包含一些相关的GPIO口信息,我们也需要进行配置。

使用GPIO_InitStruct后面多加一个点“.”引出各种参数:

 我们先把他们一一选择,稍后再进行编辑:

 Mode:模式    Pin:引脚    Speed:速度

①对于Mode:我们右键选择跳转到函数的用法,稍微往上移动,我们可以看到如下方框中的信息,这些信息每一行代表着一种GPIO口的输出模式,我们选择推挽输出,即复制GPIO_Mode_Out_PP

 粘贴到main.c的配置信息中。

② 对于PIN:我们采取相同的操作,会发现并没有直接进入到函数介绍的界面,而是在左下角出现如下一个弹窗

 我们双击选择第二项。

选择GPIO_pins_define,再按Ctrl+F进行查找,弹出左侧界面后再点击Fine Next。

 我们可以看到一系列PIN脚的序号,我们根据需求选择,有序我们需要配置PC13,故而选择GPIO_Pin_13.复制后粘贴到我们的工程代码上面。

③对于speed:我们也进行相同的操作,右键speed进入函数说明,选择GPIOSpeed_TypeDef,按下Ctrl+F进行查找,弹出界面后按下Fine Next

 可以看到如下界面,我们复制 GPIO_speed 50MHZ,粘贴到工程speed那一栏。

最后我们会得到如下工程代码:

 其实第一项的查找也是可以Ctrl+F进行查找的,只不过他最终查找的结果离得比较近,就没必要多此一举。当然也可以直接右键选择Go To DeFination......,不过在注释中有时会失效,这时候就可以用Ctri+F的方法。

步骤3:控制端口的高低电平

介绍两个代码:

GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);

第一个的意思是把PC总线的第13号引脚设置为高电平,第二个的意思是把它设置为低电平,当然括号内的参数也可以按照需求改动,我们选用的是PC13号口,故而使用的是图中所示的参数。

我们把第二个代码输入我们的工程代码中,得到如下所示:
 

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Speed =  GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_InitStruct);
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);
	while (1)
	{
		
	}
}

插上ST-LINK,连接单片机,我们编译后下载。(从左往右依次按下方框中的按键)

 这时你会看到我们单片机上的另外一个LED亮了,把代码换为第一行代码,编译运行后此LED熄灭。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值