IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CubeMX+Keil5+Proteus联调LED灯(入门篇) -> 正文阅读

[嵌入式]STM32CubeMX+Keil5+Proteus联调LED灯(入门篇)

本文说明

学生党,之前学习过嵌入式的课程,跟着正点原子的视频一步一步地构建项目的工程,主要是基于标准库的开发,整个过程实在是过于繁琐。想必有的同学也应深有体会。
最近准备开始嵌入式相关的工作,打算使用HAL库进行开发,所以看了许多视频和教程做一个项目,本文主要做一个学习总结。

STM32CubeMX安装和使用

官网安装链接
选择适应自己的系统即可在这里插入图片描述
安装过程就不细谈了,基本上就是一直下一步
打开软件,安装HAL库,这里我们选择在线安装HAL库
在这里插入图片描述

选择所需的芯片包,安装即可。

在这里插入图片描述
这边我已经安装好了,不再细说。

完事之后我们就可以新建我们的工程了

在这里插入图片描述
接着选择我们的芯片,这里要注意选择Proteus8.9(我安装的版本是8.9)里面有的芯片,如下图所示,因为我们之后要在Proteus里仿真

在这里插入图片描述
这里我们搜索STM32F103R6,选择第二种封装方式,双击即可开始我们的工程

在这里插入图片描述
打开之后我们就看到我们所选的芯片和它的引脚图

在这里插入图片描述

这里我想要实现的效果是用一个按键输入控制两个LED灯的亮灭,所以我们就需要一个GPIO输入和两个GPIO输出
这里我选择PA1,PA2位输出引脚,PB0为按键输入引脚,操作方法是点击芯片上PA1(以PA1的设置为例),选择GPIO_Output即可

在这里插入图片描述
然后你可以右键对PA1引脚进行重命名,比如我们命名为LED1,右键然后选择“Enter User Label”,输入名称即可。

在这里插入图片描述
当然这一步完全可以省略233333
然后点击左侧的System Core的下拉框选择GPIO进行GPIO的配置

在这里插入图片描述
依次配置每个端口,包括
GPIO output level(初始化输出电平)
GPIO mode(模式)
GPIO Pull-up/Pull-down(上下拉)
Maximum output speed (输出响应速度)
User Label(用户标签): 标记这个引脚是做什么用的,便于用户理解

这里我们设置初始化两个输出电平为高电平,即灯灭,每个配置项内容如上图所示

在这里插入图片描述

设置按键输入为上拉,如上图所示。
接下来我们设置一下时钟,HSE这一项选择如下图所示

在这里插入图片描述
点击Clock Configuration,选择HSE,然后设置频率为72MHz,如下图

在这里插入图片描述
由于我们是准备进行仿真,所以我们在SYS中选择Debug模式为"No Debug",如下图所示

在这里插入图片描述
接着我们进行项目配置,准备生成项目代码

选择Project Manager,设置项目名,项目地址,选择IDE和对应的版本,这里我们选择MDK-ARM,V5

在这里插入图片描述
最后,我们配置一下Code Generator,勾选生成.c文件或者./文件
完事点击右上角的GENERATE CODE按钮就完成啦!

在这里插入图片描述
代码生成好之后,会给一个按钮,让你定位到项目目录中,然后打开目录中的MDK-ARM文件夹,就看到了熟悉的Keil工程文件

在这里插入图片描述
至此,STM32CubeMX能做的工作就结束了

u1s1,STM32CubeMX很是方便,不用麻烦地构建工程,不用导入各种文件,不用自己写代码设置引脚和GPIO模式等等,用图形工具就帮我们生成IDE就绪项目,接下来我们只要在Keil里面写入我们的逻辑即可

Keil实现按键控制LED亮灭

打开Keil工程,找到main.c文件,找到主函数int main(void),在while(1)内写入代码,如图所示

在这里插入图片描述
代码如下,应该能看懂,不管他完善不完善吧,测试仿真而已

  while (1)
  {
		if(HAL_GPIO_ReadPin(Button_GPIO_Port,Button_Pin)==SET)  //判断按键按键是否按下
		{
			HAL_Delay(10);                                        //延迟防抖
			if(HAL_GPIO_ReadPin(Button_GPIO_Port,Button_Pin)==SET)//如果按键确实按下
				HAL_GPIO_WritePin(GPIOA,LED1_Pin|LED2_Pin,GPIO_PIN_RESET);//输出低电平,即灯亮
			else
				HAL_GPIO_WritePin(GPIOA,LED1_Pin|LED2_Pin,GPIO_PIN_SET);//输出高电平,即灯灭
		}			
  }

完事编译项目,生成hex文件即可导入Proteus进行仿真了

Proteus仿真

先绘制原理图,找到需要的元件,根据设置好的引脚进行连线即可。
原理图如下图所示

在这里插入图片描述
双击芯片STM32F103R6,导入Keil项目中生成的hex文件,设置主频为72MHz,选择PCB封装包(对应STM32CubeMX选择芯片包那一步),确定即可。

在这里插入图片描述
记得配置一下电源,点击上方 设计–配置供电网,然后配置VCC/VDD
就像这样

在这里插入图片描述
最后我们运行仿真一下,按键按下,灯亮,松开按键,灯灭。

在这里插入图片描述
任务完成!

总结

主要是做一个学习的记录,方便下次查看

我是爱学习的诸葛铁锤,觉得有用的话点个赞哈,啾咪

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:21:29  更:2021-07-22 14:22:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 10:52:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码