点亮你的第一颗Led灯

1、📕前言


该系列文章用于记录个人学习stm32单片机的过程,全文搭配图文解说,零基础的萌新也能读懂,欢迎指导讨论~

2、📦准备材料

2.1、📝硬件材料清单

面包板1块

PWLINK PowerWriter仿真器1个

杜邦线(公对母)2根

发光二极管1只

Stm32F103RCT6的单片机1个

万用表1个

(用于测试电路,非必要)

2.2、📁软件清单

Java

Stm32CubeMX

Keil5

PowerWriter


3、🔌接线

3.1连接仿真器与单片机

        我们在Stm32单片机连接仿真器前,应先分清杜邦线(PWLINK PowerWriter附赠了杜邦线,不用担心没有杜邦线)与之对应的接口。我在下图中用两个红圈圈出了对应的关系,即图中①③⑤⑦⑨(即第一排标号)对应右边上面的四根线(即黄、绿、黑、红、红四根线)

         在PWLINK PowerWriter官方的参考图(下图)中,首先我们可以知道SWCLKSWDIO分别连接单片机的PA14PA13引脚。其次仿真器的TX、RX分别与单片机的RX、TX(RX对TX,TX对RX的顺序)相连接,在Stm32f103系列当中,PA10RX引脚,PA9TX引脚,也就是将TXPA10相连接,将RXPA9相连接,同时将仿真器的5V(电源线)和GND(接地线)与单片机的5V和GND对应相连。

        在我们接线的过程中需要注意的是RX、TX容易接错,所以接完之后可与上面电路图比对,确认无误后再插入USB,下图为接线完成之后的图片。

3.2连接面包板与LED灯

        面包板的同一横线的插孔处于相同电路(电势),我们要使Led与单片机构成回路,则Led灯的管脚的插放位置应如上图所示。若Led的两个管脚处于同一横线,那么Led灯会被短路。同理,我们在接两根杜邦线(公对母)时也需插入在不同横线的插孔当中。

        为了测试是否成功,我们将万能表调至通断档,然后再用电笔去接触杜邦线,如上图中所示可发现Led灯发光,则面包板上构成通路,接线成功。

3.3连接LED灯与单片机

        我们将杜邦线一根接入单片机的GND引脚,另一个杜邦线接入你想要接入的引脚X,本文中在这接入PA5引脚,请一定要记住你接入的引脚X,在下面新建工程和编写代码中都要使用这个引脚X。最终接完后如下图所示。


4、🔧配置软件

4.1配置PowerWriter

         如下图红框中所示,我们在安装好PowerWriter之后,在“选择设备”一栏中,我们选择设备为PWLINK2

         我们在首页中点击“选择芯片”,然后按照下图红框中的操作选中STM32F103xC芯片型号(本文使用的单片机为Stm32f103rct6,而如果你的芯片是Stm32f103c8t6则选择STM32F103x8型号),最后点击确定

        当你选择好后型号后,此时把仿真器插入到电脑上,然后勾选自动连接,接着再刷新设备。如果你已成功连接到设备,PowerWirter会显示目标芯片:已连接,并且仿真器上的红灯会变为蓝灯,如下图所示。


4.2配置Stm32CubeMX

4.2.1网盘安装固件包(离线安装)(个人推荐)

        首先下载安装Stm32CubeMx(文章末尾给出连接),在我们安装完成之后打开Stm32CubeMX,如下图红框中所示,首先点击上方栏中的“Help”,然后选择“Updater Settings

        如下图中所示,我们可以看到“Repository Folder ”此栏,这是存放固件包的仓库。你可以直接在D盘中解压固件包压缩包(资源在文末的百度分享链接当中,如果从官方下载安装往下看),解压后点击BrowseRepository Folder设为如下地址:

D:\STM32Cube\Repository

最后重启STM32CubeMX即可。

        在我们重启之后,再次进入STM32CubeMX,如下图红框中所示,点击“Manage embedded software packages ”。

如下图红框所示,我们首先找到STM32F1系列,然后选择点击展开.

 如下图所示,在展开之后我们可以看到已经成功安装了三个版本的固件包。

4.2.2官方安装固件包 (离线安装)

        假如你要准备从官方下载固件包,如下图所示,首先根据你需要的版本进行下载,然后下载时会提醒你需要邮箱验证下载或者创建账号登入下载(官网有CN站,不用担心网速),跟着官方说明步骤进行下载。

         如下图所示,我们将从官网下载好的压缩包进行解压,然后打开解压后的文件夹,虽然看到的是1.8.0版本的文件夹,但是你不用对此怀疑,因为高版本相当于基础版的增强版,我们只需要将其重命名为实际的版本,然后复制粘贴到存放固件包的仓库。

         最后同上面安装步骤一样,将Repository Folder的路径选择为你存放该固件包的仓库路径,然后重启Stm32CubeMX,重复上面步骤即可看到成功安装。网盘里面的相当于将官方中安装包里的文件夹提取出来,因此两者之中固件包并不存在差异。虽然Stm32cubeMX也提供了在线下载的方式,但我一直没下载成功,所以在这里就不详细讲解了。


5、🏗️新建工程

我们首先打开Stm32CubeMX的首页,找到上方栏中的“File”,选择“New Project”新建一个项目,如下图红框中所示。

        如下图所示,在进入之后我们在搜索栏中输入"STM32F103RCT6"然后回车,然后在搜索结果最左边选择收藏,这样在下次新建工程时在收藏夹中可直接找到,然后我们双击该名称进入到工程当中。

         我们在进入之后能看到单片机模型,当然你可以从模型中直接找到引脚,不过在这里我们使用智能搜索,在搜索栏中输入PA5(请注意,这里对应的是连接LED灯与单片机时的引脚)然后回车,然后PA5引脚就会闪烁提示,如下图所示。

在我们找到PA5引脚之后,单击此引脚然后选择GPIO_Output模式

         首先我们在左侧栏中展开System Core,然后选中GPIO,接着在左边中点击PA5名称,之后就是按照如下图所示配置相关选项。

         来到配置工程的部分,我们首先在上方栏中点击Project Manger,然后点击左侧的Project进行配置工程。在第一栏设置你的项目名称,在这里最好使用英文例如My_LED。在Toolchain/IDE中我们选择MDK_ARM,这样生成的就是keil工程,接着我们取消使用识别到的固件包,因为怕生成失败,这里我们从下载解压的本地固件仓库中进行选择固件包。

        点击左边栏中的Code Generator,我们在上面的选项中勾选添加仅需的文件,然后再将下面第一个选项勾上,即生成C代码和头文件,最后点击上方栏上面的GENERATE CODE即可完成工程。

        当构造工程文件完成时,你可以选择Open Project打开keil工程,当然为了防止以后找不到,在这里我们可以从文件夹中打开,我们返回到Project中可以找到咱们存储工程的路径,然后从文件资源管理器中进入后,接着双击进入MDK-ARM文件夹,最后找到.uvprojx后缀文件并双击进入到keil工程


6、👨‍💻编写代码

我们进入到keil之后,找到左侧第二个文件夹并展开,然后双击main.c文件进入编写代码

         Stm32CubeMX已经帮我们初始好了代码,所以我们只需在特定的地方编写代码即可。我们找到main函数里的while循环,如下图所示,在这编写点亮LED灯的代码。

        查阅Stm32的hal库资料可知在Stm32单片机中HAL_GPIO_WritePin函数控制GPIO的输出,具体解释如下:

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, uint32_t PinState);
  • GPIOx:GPIO_TypeDef * 类型,是GPIO寄存器类型,参数可选范围是GPIOA~GPIOG。
  • GPIO_Pin:unit16_t类型,是GPIO寄存器的位端口,参数可选范围是GPIO_PIN_0~GPIO_PIN_15。
  • PinState:uint32_t类型,指定要写入选定位的值,参数可选范围是GPIO_PIN_RESET,GPIO_PIN_SET两个值,分别代表低电平、高电平。

         前面知道了LED灯接入的单片机引脚为PA5,所以我们前两个参数传入GPIOAGPIO_PIN_5。如果是简单的点亮一行代码,我们仅需设置为高电平即可,即在while中添加如下代码:

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);

        那么接下来我们要实现进阶的流水灯效果该怎么做呢?首先交替高低电平可以用GPIO_PIN_RESET,GPIO_PIN_SET交替出现,而单片机自身的代码执行时间极短,所以我们还需在其中添加延时,故我们使用HAL_Delay函数实现延时,它的延时时长为传入数字乘以毫秒,即

HAL_Delay(1000)=1秒

故最后我们在while中添加如下代码,并按"Ctrl"+"S"进行保存

	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);HAL_Delay(500);


7、🪄烧录

        在烧录时我们需要配置keil软件才能生成Hex文件,在我们keil中上方栏中有个魔术棒符号,点击进入配置。

 

 找到上方栏中的Output选项,然后勾选上"Create HEX File",最后点击OK返回。

我们在配置好之后就可以开始编译代码,找到文件栏上方中第二个按钮"Build"并点击(也可以按"F7"或"Fn"+"F7"),然后无报错之后进行下一步。

 我们返回到PowerWriter首页当中,点击"Program Memory"再选择"添加固件"(添加Hex文件)

         我们进入到文件资源管理器之后在路径输入之前Stm32CubeMX存放工程的路径,然后双击进入到MDK-ARM文件夹当中(忘了可以往前翻翻,和打开keil工程时文件夹一致)

 接着我们双击进入到名字为工程名称的文件夹当中,如下图所示。

 在该文件夹中我们可以找到一个可执行文件(Hex后缀文件),双击该文件进行添加,最后点击确定

 我们找到PowerWriter上方栏中的自动(机器人图标)并点击,操作完成之后可以看到数据已经烧录到缓存区当中了。

烧录之后没现象发生是因为还差最后一步,我们在PowerWriter上方栏找到"复位"并点击,即可观察到LED被成功点亮并实现流水灯效果。

LED流水灯效果展示

当然让LED灯安全停下也是必不可少的步骤,我们返回到PowerWriter当中,然后选择“删除固件",然后再点击"自动"图标即可停下来。


8、🔍参考资料

Powriter官方文档https://docs.powerwriter.com/docs/powerwriter_for_arm/intro

Stm32CubeMX官方下载https://www.st.com/zh/development-tools/stm32cubemx.html#get-softwareStm32CubeMX百度分享https://pan.baidu.com/s/1-j0cK0w_zjEsz7oaHqHyLw?pwd=xz69

Stm32CubeMXF1系列固件库官方下载https://www.st.com/zh/embedded-software/stm32cubef1.html

Stm32CubeMXF1系列固件库百度分享https://pan.baidu.com/s/1sz3tziQzDKZQS96nI_KKwA?pwd=zgj2

PowerWriter下载https://manage-cloud.icworkshop.com/attachment/manage/2022/07/27/205938/PowerWriter_1_3_3_6_installer_exe.zip


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/34419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python web实战之Django 的缓存机制详解

关键词:Python、Web 开发、Django、缓存 1. 缓存是什么?为什么需要缓存? 在 Web 开发中,缓存是一种用于存储数据的临时存储区域。它可以提高应用程序的性能和响应速度,减轻服务器的负载。 当用户访问网页时&#xff…

STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用

文章目录: 一:LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二:蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三&#xff1…

Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

目录 1. 用户登录权限校验 1.1 最初用户登录权限效验 1.2 Spring AOP 用户统⼀登录验证 1.3 Spring 拦截器 (1)创建自定义拦截器 (2)将自定义拦截器添加到系统配置中,并设置拦截的规则 1.4 练习:登录…

腾讯云2核2g轻量应用服务器能容纳多少人?

腾讯云轻量应用服务器2核2g能容纳多少人?轻量应用服务器2核2g配置自带4M公网带宽,以网站应用为例,假设优化后的网页平均大小为60KB,2核2G4M带宽轻量服务器可以支持10个并发数,即同时10个人在1秒内同时打开网站&#xf…

【C++学习系列】1.小谷记账踩坑记

文章目录 前言1.基础支持2. 几个小坑2.1 为什么要用引用传值2.2 头文件的作用2.3 while true的使用和跳出 3. 未解决的问题 前言 是尚硅谷的C第一季的项目,我跟着敲下来了,发现几个坑点,记录下来; 1.基础支持 有这个则只require…

大华智慧园区综合管理平台文件上传漏洞复现(HW0day)

0x01 产品简介 “大华智慧园区综合管理平台”是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。 0x02 漏洞概述 大华智慧园…

Vue+SpringBoot项目开发:登录页面美化,登录功能实现(三)

写在开始:一个搬砖程序员的随缘记录上一章写了从零开始VueSpringBoot后台管理系统:Vue3TypeScript项目搭建 VueTypeScript的前端项目已经搭建完成了 这一章的内容是引入element-plus和axios实现页面的布局和前后端数据的串联,实现一个登陆的功能&#x…

「何」到底该读「なん」还是「なに」?柯桥学日语

「何」到底该读「なん」还是「なに」? 首先,讲一个规律,大家记住就行。当「何」后面所接单词的第一个发音在“た”、“だ”、“な”行时,读作“なん”。一般这种情况下,后面跟的是の、でも、です和だ。 用例&#xff…

php后端实现调用高德地图进行POI搜索

对于当前位置或者选定省市位置进行查询 接口实现 /*** 查询地址* ApiTitle (查询地址)* ApiSummary (查询地址)* ApiMethod (POST)* ApiRoute (/api/demo/address)* ApiParams (name"dart", type"integer", requiredtrue, description"省…

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典

【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 目录 【软件工程】数据流图/DFD概念符号/流程图分层/数据字典 一、数据流图 ( DFD ) 简介 二、数据流图 ( DFD ) 概念符号 1、数据流 2、加工 ( 核心 ) 3、数据存储 4、外部实体 三、数据流图 ( DFD ) 分层 1、…

python制作小程序制作流程,用python编写一个小程序

这篇文章主要介绍了python制作小程序代码宠物运输,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 1 importtkinter2 importtkinter.messagebox3 importmath4 classJSQ:5 6 7 d…

并发编程--------JUC集合

并发集合 一、ConcurrentHashMap 1.1 存储结构 ConcurrentHashMap是线程安全的HashMap ConcurrentHashMap在JDK1.8中是以CASsynchronized实现的线程安全 CAS:在没有hash冲突时(Node要放在数组上时) synchronized:在出现hash…

运算符重载

这里写目录标题 运算符重载在全局范围内重载运算符运算符重载时要遵循的规则运算符重载到底以成员函数的形式更好还是全局函数(友元函数)的形式更好重载例题(属于友元函数的 运算符重载函数) 运算符重载 运算符重载其实就是定义一…

022 - STM32学习笔记 - 扩展外部SDRAM(一) - 初识SDRAM和FMC

022 - STM32学习笔记 - 扩展外部SDRAM(一) - 初识SDRAM和FMC 之前学习了I2C读写EEPROM和SPI读写FLASH,学完之后在学习一种新的存储介质–SDRAM。 一、初识SDRAM 我们知道在stm32内部是有一定大小的SRAM(256Kb)和FLA…

无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)

在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 强化学习&#xff…

c++日志工具之——log4cpp

1、log4cpp概述 Log4cpp是一个开源的C类库,它提供了C程序中使用日志和跟踪调试的功能,它的优点如下: 提供应用程序运行上下文,方便跟踪调试; 可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内…

阿里云服务器搭建WordPress建站教程基于Windows系统

本教程是使用阿里云服务器镜像系统选择的是Windows操作系统,手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…

Docker mysql+nacos单机部署

docker 网络创建 由于nacos需要访问mysql的数据,因此mysql容器和nacos容器之间需要进行通信。容器间通信有很多方式,在这里采用同一网络下的方式进行实现。因此需要创建网络。创建网络的命令如下: docker network create --driver bridge n…

HICP学习--BGP综合小实验

需要完善 一、实验拓扑 二、实验需求 1、R2-7每台路由器均存在一个环回接口用于建立邻居,同时还存在一个环回来代表连接用户的接口;最终这些连接用户的接口网络需要可以和R1/8的环回通讯 2、AS2网段地址172.16.0.0/16 减路由条目数量 三、实验步骤 首先配置IP R…

tensorflow / tensorflow-gpu cuda cudNN tensorRT 安装,启用显卡加速

tensorflow / tensorflow-gpu cuda cudNN tensorRT 安装,启用显卡加速 说明 Tensorflow-GPU 已被移除。请安装 tensorflow 。 tensorflow 通过 Nvidia CUDA 支持 GPU 加速操作。 自 2019 年 9月发布 的 TensorFlow2.1 以来,tensorFlow 和 tensorflow-GPU 一直是同…