点亮你的第一颗Led灯

1、前言


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

2、准备材料

2.1、硬件材料清单

面包板1块

点亮你的第一颗Led灯_第1张图片

PWLINK PowerWriter仿真器1个

点亮你的第一颗Led灯_第2张图片

杜邦线(公对母)2根

点亮你的第一颗Led灯_第3张图片

发光二极管1只

点亮你的第一颗Led灯_第4张图片

Stm32F103RCT6的单片机1个 点亮你的第一颗Led灯_第5张图片

万用表1个

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

点亮你的第一颗Led灯_第6张图片

2.2、软件清单

Java

点亮你的第一颗Led灯_第7张图片

Stm32CubeMX

点亮你的第一颗Led灯_第8张图片

Keil5

点亮你的第一颗Led灯_第9张图片

PowerWriter

点亮你的第一颗Led灯_第10张图片


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对应相连。

点亮你的第一颗Led灯_第11张图片

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

点亮你的第一颗Led灯_第12张图片

3.2连接面包板与LED灯

点亮你的第一颗Led灯_第13张图片

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

点亮你的第一颗Led灯_第14张图片

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

3.3连接LED灯与单片机

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

点亮你的第一颗Led灯_第15张图片


4、配置软件

4.1配置PowerWriter

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

点亮你的第一颗Led灯_第16张图片

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

点亮你的第一颗Led灯_第17张图片

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

点亮你的第一颗Led灯_第18张图片


4.2配置Stm32CubeMX

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

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

点亮你的第一颗Led灯_第19张图片

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

D:\STM32Cube\Repository

最后重启STM32CubeMX即可。

点亮你的第一颗Led灯_第20张图片

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

点亮你的第一颗Led灯_第21张图片

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

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

点亮你的第一颗Led灯_第22张图片

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

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

点亮你的第一颗Led灯_第23张图片

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

点亮你的第一颗Led灯_第24张图片

点亮你的第一颗Led灯_第25张图片

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


5、️新建工程

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

点亮你的第一颗Led灯_第26张图片

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

点亮你的第一颗Led灯_第27张图片

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

点亮你的第一颗Led灯_第28张图片

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

点亮你的第一颗Led灯_第29张图片

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

点亮你的第一颗Led灯_第30张图片

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

点亮你的第一颗Led灯_第31张图片

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

点亮你的第一颗Led灯_第32张图片

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

点亮你的第一颗Led灯_第33张图片

点亮你的第一颗Led灯_第34张图片

点亮你的第一颗Led灯_第35张图片


6、‍编写代码

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

点亮你的第一颗Led灯_第36张图片

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

点亮你的第一颗Led灯_第37张图片

        查阅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);

点亮你的第一颗Led灯_第38张图片


7、烧录

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

 点亮你的第一颗Led灯_第39张图片

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

点亮你的第一颗Led灯_第40张图片

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

点亮你的第一颗Led灯_第41张图片

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

点亮你的第一颗Led灯_第42张图片

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

点亮你的第一颗Led灯_第43张图片

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

点亮你的第一颗Led灯_第44张图片

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

点亮你的第一颗Led灯_第45张图片

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

点亮你的第一颗Led灯_第46张图片

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

LED流水灯效果展示

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

点亮你的第一颗Led灯_第47张图片


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


你可能感兴趣的:(Stm32学习记录,stm32,单片机,嵌入式硬件,c语言)