stm32点亮小灯泡

1.项目接线图

按照下图所示接线

接线图.jpg

接线.jpg

2.编写程序

2.1外设时钟控制

这三个都是对时钟进行配置的函数

timecontroller.png

2.2端口初始化

这几个函数是对端口高低电平的配置

coininit.png

2.3程序编写

2.3.1使能GPIOA端口的时钟

这里我们使用APB函数对时钟进行初始化

1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

对函数右键,选择go to difinition of ‘xxx’可以转跳到函数的定义中寻找函数参数的定义,其中所有的参数都是枚举类型,可以使用CTRL+F对函数中的每一个参数进行查找后寻找合适的枚举类型进行选择。

2.3.2GPIO初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 定义一个GPIO初始化结构体
GPIO_InitTypeDef GPIO_InitStructure;

// 设置GPIO初始化结构体的参数

// GPIO_Mode_Out_PP:推挽输出模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
// GPIO_Pin_0:选择GPIOA的第0个引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
// GPIO_Speed_50MHz:设置引脚的最高工作频率为50MHz
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

// 根据GPIO初始化结构体参数配置GPIOA的第0个引脚
GPIO_Init(GPIOA, &GPIO_InitStructure);

2.3.3主函数

1
2
3
4
5
6
7
8
 //将GPIO_Pin_0口设置为高电平
GPIO_SetBits(GPIOA, GPIO_Pin_0);
// 主循环
while (1)
{

}

2.4完整程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_SetBits(GPIOA, GPIO_Pin_0);

while (1)
{

}
}

3.程序烧录

3.1使用CH340烧录

由于CH340烧录芯片价格比STLink芯片便宜几倍,所有我选择CH340进行烧录,在keil中选择编译后输出HEX文件(二进制文件),点击编译后在Object文件夹中将会生成二进制文件。

微信图片_20240526215320.png

打开万能烧录软件FlyMcu,将串口接上stm32插入电脑后按照如下步骤:

112758-5ca2d6be2ea5e.jpg

微信图片_20240526215857.png

在刚才的项目目录中选择Object文件夹的Project.hex,点击烧录。

微信图片_20240526220048.png

程序输出如下则说明程序烧录成功

微信图片_20240526220129.png

注意烧录时候和运行时候跳线帽的位置是不一样的

4.修改跳线帽位置按下复位键

这里两种跳线帽的插法或者拔掉左边的都是可以的。

微信图片_20240526220817.jpg

微信图片_20240526220828.jpg