嵌入式实验1-软件配置+STM32最小系统+LED灯交替闪烁
零、笔记来源
1.网课看的是B站up--Black黑先森的【零基础玩转STM32】
2.本笔记为笔者本人听网课记录,方便自己和同学查阅,查漏补缺
3.建议零基础第一遍还是先跟网课走
一、创建工程
1.思维导图
2.软件工具
嵌入式三个软件安装:
2.1 STM32CubeMX
安装教程:STM32CubeMX 下载及安装教程-CSDN博客 (去官网下载,网盘里的版本会闪退)
使用说明: STM32CubeMX使用说明_stm32cubemx汉化-CSDN博客
2.2 Proteus 8
安装教程: Proteus 8 下载安装配置(最详细图文教程)+附软件安装包_proteus8-CSDN博客
安装包:
夸克链接:https://pan.quark.cn/s/f25251039f1a
2.3 Keil5
安装教程:
Keil5安装教程(保姆级)Keil5mdk安装步骤_keilmdk安装-CSDN博客
安装包:
夸克链接:https://pan.quark.cn/s/0b456fdbdcd8
3.创建项目工程
3.1 注意
项目路径、项目名称均采用英文字母
3.2Proteus 操作步骤
3.2.1 新建工程
a.创建一个project文件夹
b.打开proteus软件
c. 新建工程 保存到刚刚创建的project文件夹里 ,之后一直next即可
3.2.2 添加STM32芯片
a.在如图所示的DEVICES中点左上角的P,可以添加新组件
b.如图所示红框内可以快速输入检索你需要的组件
c.选中添加即可
3.3 STM32CubeMX操作步骤
打开软件后点击MCU创建项目
3.3.1 确定芯片型号
点击顺序为从左到右的红框部分
a.最左侧红框可以输入检索
b.中间红框点击选中即可
c.最右侧红框点击进入芯片界面
3.3.2 工程文件设置
对照图片依次填写参数或勾选内容
如图所示,红框部分依次填写项目名称,保存路径等,保存路径就填上面生成过的project文件夹内的第三层(参考图片)
MDK-ARM 选择v5,可以更好兼容
3.3.3 完成工程创建
点击红框按钮可以生成工程文件
3.4 MDK(Keil5)操作步骤
3.4.1 打开工程文件
stm32cubemx创建工程后生成了一系列文件,其中就包括keil5的.uvprojx格式文件
看到这种图标的文件,可以用MDK打开
3.4.2 软件基础设置
a.代码样式设置
点击红框这个小扳手
上面红框修改为支持简体中文,否则注释里有中文就会乱码
下面红框里对照设置即可
这个是修改代码中数字的颜色,修改为红色更醒目,也可以修改成别的内容
b.设置编译文件保存路径
3.4.3 完成编译
生成的编译文件格式为.hex
4.完成程序配置
把MDK编译生成的hex文件添加到STM32仿真芯片
二、STM32最小系统
1.供电电源
实际电路需要增加电源电路,仿真模型直接添加
1.1.供电电压3.3V
1.电源
2.接地
1.2.仿真模型电源设置
2.时钟电路
2.1 高速外部时钟(HSE)
外部时钟对应右侧的引脚,在不知道哪个引脚是外部时钟对应的引脚时,可以在中间设置HSE这里切换default和高速外部时钟,观察右侧引脚的亮灭,有亮灭的引脚就是。
供STM32外设使用,可接4-16MHZ的晶振
8MHZ 晶振
添加晶振和参考前面添加STM32芯片,晶振:crystal
在电路里添加完毕后,双击进入编辑界面,调整晶振为8MHZ
22pF 起振电容
同上:电容:cap
在电路里添加完毕后,双击进入编辑界面,调整电容为22pF
1MΩ 反馈电阻
同上,电阻:res
在电路里添加完毕后,双击进入编辑界面,调整阻值为1MΩ
最终效果为
2.2 低速外部时钟(LSE)
32.768kHz晶振
同上
12pF起振电容
同上
在进行设置低速外部时钟时,因为与高速外部时钟重合度很高,可以复制上面设置好的电路。
鼠标左键选择好区域后,右键块复制,ctrl+c没有用
最终效果为
3.复位电路
电路组成:10kΩ电阻、105电容 1uF 、 开关
NRST叫做复位
开关:BUTTON,还是在DEVICES中自行添加
电路:
4.设置电源指示灯
LED 灯:LED (可选择颜色) 在DEVICES中添加
连接好以后,成功接通电路后LED灯会亮
5.启动电路(BOOT)
仿真模型不涉及,不做介绍
6.调试下载电路
仿真模型不涉及,不做介绍
7.完整的最小系统电路
三、LED 灯闪烁
1.电路设计
通过Proteus软件创建电路仿真模型
1.1 STM32最小系统:搭建STM32工作基础条件
1.2 LED灯电路
电路、电阻、LED灯
连接到引脚的两种方式:1.连线,2.标签
标签:TERMINALS - DEFAULT,两个标签命名相同即可互连互通
2.引脚配置
通过STM32CubeMX软件配置LED灯控制引脚
2.1 设置引脚功能
将控制LED灯的引脚设为:GPIO Output
选择对应proteus中设置连接的引脚,在stm32cubemx软件中把它们设置为GPIO_Output
2.2 修改引脚标签
修改标签为易理解的名称
如图可以设置标签自定义名称
2.3 生成MDK工程文件
GENERATE CODE右上角
3.LED灯程序编写
通过Keil5
3.1 LED灯电平翻转
完成LED灯高低电平切换
HAL_GPIO_TogglePin函数
括号内参数:xx_GPIO_Port, GPIO_Pin(外部设备连接的GPIO端口,外部设备连接的引脚)
GPIO端口指的就是图中的红框和蓝框部分
红框是GPIOA简称PA,蓝框是GPIOB简称PB
3.2 闪烁延时
控制LED灯亮灭时长
HAL_Delay函数
括号内参数:xx毫秒
3.3LED灯电平置位或清零
控制LED灯电平为高电平或低电平
HAL_GPIO_WritePin函数
括号内参数:xx_GPIO_Port, GPIO_Pin, GPIO_PIN_RESET/SET(外部设备连接的GPIO端口,外部设备连接的引脚, 引脚复位/设置)
4.实现LED流水灯
使用STM32F103ZET6开发板,实现两个LED灯的循环交替点亮,即LED1亮时,LED2灭;LED1灭时,LED2亮。GPIO端口和引脚自己选择使用。
4.1 Proteus最终电路
4.2 Keil最终代码