工程模板以及点灯源代码在以下链接中,诸位先下载解压。
链接:https://pan.baidu.com/s/1JmHzZr5sD94D3vVA7YYq2Q
提取码:0323
/****建立工程的几点教训。*****/
1.添加文件的时候要添加完全
2.在三个箱子里面可以快速添加
3.STLINK配置
4.添加路径以及写上这行话 USE_STDPERIPH_DRIVER
【Start文件初始化】
(工程模板中已经建好,以下是详细说明,可略过)
下载完成后,打开工程模板文件夹,电点击红色框Project进入keil5中进行编辑,该工程模板可以作为往后各个工程的初始模板,省去初始化的时间。但需要注意的是,对于不同型号的单片机,我们有一些文件的选择需要变动,这个在下文有详解。因此该工程模板仅适用于型号为STM32F103。Flash容量为64~128K的单片机。
我们点击目录中Start,可以看到Start文件夹下有诸多的文件,每个文件上方都有一个钥匙的小图标,意思是只读文件,其实在Start下的文件并不是固定不变的,我们需要根据需求来选择对应的文件,我们右键Start,选择ADD Existing Files to Group ‘Start’(添加存在的文件进入分组‘Start’),然后选择工程模板文件夹中的Start文件,文件类型选择所有文件,我们可以看到如下图所示
【main.c初始化】
【常用操作】
①导入新建文件夹
而后在弹出的界面中寻找到刚才新建的文件夹选择添加即可。每一次在添加了新的文件夹之后都要进行这步操作,避免在工作时无法寻找到文件中的.h文件导致运行错误。
通常我们只需要修改User中的文件即可满足大部分需求,因此我们为了方便管理文件,可以通过如下方式进行文件夹的换位:
2号框框中可以把文件拖动进行换位,一般我们把需要编辑的文件User放在最后。
②更改字体大小:
③常用设置
【点灯】
步骤1:进行时钟配置
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:我们采取相同的操作,会发现并没有直接进入到函数介绍的界面,而是在左下角出现如下一个弹窗
我们可以看到一系列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);
#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) { } }
这时你会看到我们单片机上的另外一个LED亮了,把代码换为第一行代码,编译运行后此LED熄灭。
————————————————
版权声明:本文为CSDN博主「笔下觅封侯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_63148816/article/details/125793678