当前位置: 首页 > news >正文

嵌入式实验1-软件配置+STM32最小系统+LED灯交替闪烁

零、笔记来源

1.网课看的是B站up--Black黑先森的【零基础玩转STM32】

2.本笔记为笔者本人听网课记录,方便自己和同学查阅,查漏补缺

3.建议零基础第一遍还是先跟网课走

1452495eb84f4c7987f8ae90078a36b7.png

 

一、创建工程

1.思维导图

 

faedd3c3b39a0d5f1b14aaeb5585b9c8.png

2.软件工具

嵌入式三个软件安装:

2.1 STM32CubeMX

8b199c2fefb447eaa30da02585a95d4e.png

安装教程:STM32CubeMX 下载及安装教程-CSDN博客 (去官网下载,网盘里的版本会闪退)

使用说明: STM32CubeMX使用说明_stm32cubemx汉化-CSDN博客

 

2.2 Proteus 8

a6d7ffbfc424405d89176f8b81916daa.png

安装教程: Proteus 8 下载安装配置(最详细图文教程)+附软件安装包_proteus8-CSDN博客

安装包:
夸克链接:https://pan.quark.cn/s/f25251039f1a

 

2.3 Keil5

d8731e2eaaba4d9194ce58da7f0f2e27.png

安装教程:

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,可以添加新组件

e4ec440a701c4741b5e7116120d28ece.png

b.如图所示红框内可以快速输入检索你需要的组件

c.选中添加即可

a507451a1167418d8174162cfa4a60af.png

 

3.3 STM32CubeMX操作步骤

打开软件后点击MCU创建项目

3.3.1 确定芯片型号

点击顺序为从左到右的红框部分

a.最左侧红框可以输入检索

b.中间红框点击选中即可

c.最右侧红框点击进入芯片界面

65ac87c844bd40f48fc6aa1e0c057dac.png

 

3.3.2 工程文件设置

对照图片依次填写参数或勾选内容

5602dd53bc67402a9d570c672e57abf3.png

如图所示,红框部分依次填写项目名称,保存路径等,保存路径就填上面生成过的project文件夹内的第三层(参考图片)

MDK-ARM 选择v5,可以更好兼容

33ce4dfb026648c3b454479c0bcdc510.png

dee5972da1d7476cbdfa6a499ee1b662.png

 

3.3.3 完成工程创建

点击红框按钮可以生成工程文件

66002d19c5864b578e3c49b3b2d82da5.png

 

 

3.4 MDK(Keil5)操作步骤

3.4.1 打开工程文件

stm32cubemx创建工程后生成了一系列文件,其中就包括keil5的.uvprojx格式文件

看到这种图标的文件,可以用MDK打开

f96e4abc5cf24559a132de4e735bad1b.png

3.4.2 软件基础设置

a.代码样式设置

点击红框这个小扳手

ee4b8184baca4496a858f83d6fd5a1c4.png

上面红框修改为支持简体中文,否则注释里有中文就会乱码

下面红框里对照设置即可

a9ae93a5e31541d98f97b76ba4999c70.png

这个是修改代码中数字的颜色,修改为红色更醒目,也可以修改成别的内容

254507e7d6c74409a9547d9da164d472.png

 

 

b.设置编译文件保存路径

a999fee3aee24f5ba2993f18888d5142.png

7ed698d5bd7d40e58f8b0fbc99133090.png

3.4.3 完成编译

9256b638bf0e4d10b794ad2151e76d3d.png

生成的编译文件格式为.hex

222946b574774b6da1518aee0d62f31c.png

4.完成程序配置

把MDK编译生成的hex文件添加到STM32仿真芯片

b686886eb5814096a63d272be90efed4.png

 

 

 

 

 

二、STM32最小系统

 

607b430a226c308ef936d5748e3654de.png

 

1.供电电源

实际电路需要增加电源电路,仿真模型直接添加

1.1.供电电压3.3V

1.电源

49005849eb2f4edeb335649319a85c0f.png

2.接地

b6c7bf0c92dc4b728129e6a3493ee4d4.png

 

1.2.仿真模型电源设置

2199ae22a5a44fddbdce7a8da6e71a99.png

2.时钟电路

2.1 高速外部时钟(HSE)

7e66e04cff8f485cae2e3a0ed856ec02.png

外部时钟对应右侧的引脚,在不知道哪个引脚是外部时钟对应的引脚时,可以在中间设置HSE这里切换default和高速外部时钟,观察右侧引脚的亮灭,有亮灭的引脚就是。

供STM32外设使用,可接4-16MHZ的晶振

8MHZ 晶振

添加晶振和参考前面添加STM32芯片,晶振:crystal

在电路里添加完毕后,双击进入编辑界面,调整晶振为8MHZ

edc4ca502bb34291b1958e19fa2f6667.png

 

22pF 起振电容

同上:电容:cap

在电路里添加完毕后,双击进入编辑界面,调整电容为22pF

1MΩ 反馈电阻

同上,电阻:res

在电路里添加完毕后,双击进入编辑界面,调整阻值为1MΩ

最终效果为

3c3d09c408a04c7d975c6dfbf9c38177.png

 

2.2 低速外部时钟(LSE)

32.768kHz晶振

同上

12pF起振电容

同上

在进行设置低速外部时钟时,因为与高速外部时钟重合度很高,可以复制上面设置好的电路。

鼠标左键选择好区域后,右键块复制,ctrl+c没有用

最终效果为

5a9cb43e38084fb798e6e70ae93ff729.png

3.复位电路

电路组成:10kΩ电阻、105电容 1uF 、 开关

NRST叫做复位

6d35eb1c6fec48c1a038acd424675ef3.png

开关:BUTTON,还是在DEVICES中自行添加

电路:

92fc8467129b46588436148545366e2d.png

4.设置电源指示灯

LED 灯:LED (可选择颜色) 在DEVICES中添加

连接好以后,成功接通电路后LED灯会亮

f9d4c8006d194c90bf5473996ec0de2c.png

5.启动电路(BOOT)

仿真模型不涉及,不做介绍

 

6.调试下载电路

仿真模型不涉及,不做介绍

 

7.完整的最小系统电路

e7d44066f1274e699bad05ec4058fb67.png

 

三、LED 灯闪烁

a4d79907fcaf41eb980f9ef4df12a771.png

1.电路设计

通过Proteus软件创建电路仿真模型

1.1 STM32最小系统:搭建STM32工作基础条件

1.2 LED灯电路

电路、电阻、LED灯

连接到引脚的两种方式:1.连线,2.标签

标签:TERMINALS - DEFAULT,两个标签命名相同即可互连互通

81bcdc0d7269455db7a5cb61eeceec7e.png

 

2.引脚配置

通过STM32CubeMX软件配置LED灯控制引脚

2.1 设置引脚功能

将控制LED灯的引脚设为:GPIO Output

选择对应proteus中设置连接的引脚,在stm32cubemx软件中把它们设置为GPIO_Output

a4043b9fd7f447769faad356bb04f477.png

2.2 修改引脚标签

修改标签为易理解的名称

如图可以设置标签自定义名称

d0f211ef368145adaccc9621e4ceb917.png

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

32fc4187d996448fa3ca7d6fb6735463.png

53a01997520e4507a001e6087f8738e8.png

3.2 闪烁延时

控制LED灯亮灭时长

HAL_Delay函数

括号内参数:xx毫秒

920e4fa09908454a82ea85e1e75d1f12.png

 

3.3LED灯电平置位或清零

控制LED灯电平为高电平或低电平

HAL_GPIO_WritePin函数

括号内参数:xx_GPIO_Port, GPIO_Pin, GPIO_PIN_RESET/SET(外部设备连接的GPIO端口,外部设备连接的引脚, 引脚复位/设置)

5d235d86d946451b877f432e129f1e48.png

 

 

4.实现LED流水灯

使用STM32F103ZET6开发板,实现两个LED灯的循环交替点亮,即LED1亮时,LED2灭;LED1灭时,LED2亮。GPIO端口和引脚自己选择使用。

4.1 Proteus最终电路

e91325009b1943968d611e18b1379df3.png

4.2 Keil最终代码

abcf991f8a8a4cb7a4eb0e0b9487d106.png

 


http://www.mrgr.cn/news/65114.html

相关文章:

  • 【使用 Python 和 ADB 检查 Android 设备的 Wi-Fi 状态】
  • 后端eclipse——文字样式:UEditor富文本编辑器引入
  • 【深度学习】用LSTM写诗,生成式的方式写诗系列之一
  • Redis-事务、锁
  • 无人机之集群控制方法篇
  • SQL 通用数据类型
  • koa + sequelize做距离计算(MySql篇)
  • MyBatis-Plus条件构造器:构建安全、高效的数据库查询
  • 深入了解 Flutter 中的泛型:让代码更灵活更安全的关键
  • 6-4 重新加载GDT(1)
  • 2025四川省考职位表+新增考点15页。完整备考资料集!!!免费领取!
  • 嵌入式开发之刷新流
  • 51c大模型~合集10
  • Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
  • HTML5+css3(伪类,动态伪类,结构伪类,否定伪类,UI伪类,语言伪类,link,hover,active,visited,focus)
  • 基于AI大模型的图书推荐平台社区:NextRead
  • 3分钟认识API是什么
  • CCF PTA 编程培训师资认证真题-试题编号:20210701-1
  • torch维度1-》n ,k对k都是可以广播的
  • (undone) MIT6.S081 2023 一个月速通 (Day2: LAB1 Utilities)
  • 音频模型介绍
  • LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096
  • 苍穹外卖 查询订单明细
  • 删除 git submodule
  • 软件测试--BUG篇
  • SAR_ADC介绍和建模