一、引言
首先感谢天津科技大学董舰老师以及创驿社各位学长们对我们22级智能科学与先进制造实验班的培养与帮助,能给我们一个非常珍贵的实践机会来学习STM8单片机,本篇将以零基础手把手教会大家如何通过点亮LED,从而测试自己手焊STM8开发板是否合格。如果有错误,欢迎大家及时指导。.
二、关于STM8的编译器的下载
1、STVP(这里不推荐)
STVP(ST Visual Programmer)是由意法半导体(STMicroelectronics)开发的一款集成开发环境(IDE),主要用于编程和调试STM8系列微控制器。
STVP提供了一种直观易用的界面,使得用户可以轻松地编译、下载和调试STM8单片机的应用程序。用户可以通过STVP将STM8单片机的Flash、EEPROM、Option Bytes等进行编程和擦除,以及进行调试操作,包括单步调试、断点调试、观察和修改寄存器、内存和变量等。
除了基本的编程和调试功能之外,STVP还提供了一些高级功能,如仿真模式、实时跟踪等,可以帮助开发人员更快速、更准确地诊断和解决问题。此外,STVP还支持多种编程语言,包括C、C++和汇编语言等,使得用户可以根据自己的喜好和需要选择合适的编程语言。
百度网盘下载地址:
链接:https://pan.baidu.com/s/1KtWA7MXYD2QC4JBfm2HEHA?pwd=lvw1
提取码:lvw1
2、IAR(推荐使用)
IAR Embedded Workbench for STM8(简称IAR)是一款由IAR Systems公司开发的集成开发环境(IDE),专门用于编译、调试STM8系列微控制器的应用程序。IAR被广泛认为是一款高效、稳定、易用的开发工具。
IAR提供了一个直观的用户界面,使得用户可以方便地编辑、编译、调试和下载STM8的应用程序。其编译器和调试器都是针对STM8单片机进行优化的,能够生成高效的代码并提供实时调试功能。
除了基本的编译和调试功能之外,IAR还提供了一些高级功能,如代码分析工具、代码覆盖率分析、CPU使用率分析、动态内存分析等,帮助开发人员更好地了解和优化他们的代码。
IAR还提供了全面的STM8系列微控制器支持,包括各种不同型号和封装的芯片,以及各种不同的外设和接口。它还提供了广泛的文档和示例代码,帮助用户快速掌握和应用STM8单片机开发。
百度网盘下载地址:
链接:https://pan.baidu.com/s/1AEycyuYSBVTp95NMHW4UbA?pwd=5l3i
提取码:5l3i
三、软件的安装
这里引用了CSDN另外两位博主的文章:
STVP安装 原作者:StrongHuang
IAR安装 原作者:“dandan”不能定义
四、ST-LINK下载器
我们在大一上学期时使用过Mixly编译器编写过Arduino UNO的程序,在下载程序时只需要将Arduino UNO单片机上的串口通过USB连接电脑即可烧录程序。但是在使用STM8以及STM32时,我们烧录程序大多数会使用一个名叫ST-LINK的下载器来烧录程序。
ST-Link是意法半导体(STMicroelectronics)推出的一款微控制器下载器,用于将编译好的代码下载到STM32和STM8微控制器中,并且支持微控制器的调试功能。
ST-Link下载器是一种USB接口的设备,它包括了一个JTAG/SWD接口和一个USB接口。用户可以通过ST-Link将编译好的代码下载到微控制器中,并且在微控制器中设置断点、单步执行等调试操作,以帮助开发人员诊断和解决代码中的问题。
ST-Link下载器不仅支持STM32和STM8微控制器,还支持其他一些微控制器,如STM32MP1系列等。此外,ST-Link下载器还支持多种不同的IDE,包括IAR Embedded Workbench、Keil MDK-ARM、Eclipse等,可以与开发人员熟悉的IDE进行无缝集成。
大家可以在某宝或者某东自行购买,实物如图4-1
图4-1 ST-Link
五、ST-Link硬件连接STM8开发板
当我们已经拥有一块STM8和ST-Link时,我们所有的硬件设备就已经准备完毕,现在只需要将ST-Link与STM8开发板连接起来并插在电脑上,再写一段代码即可点亮LED(获得成就:点灯大师),那我们该如何连接呢?
我们仔细观察一下ST-Link上面的丝印如图5-1,可以看到5V,3.3V,GND,RST,SWIM,SWDIO,SWCLK的字样,ST-Link数据手册如图5-1:
图5-1 ST-Link数据手册
这里我们使用ChatGPT帮助我们翻译一下:
由USB连接器提供的5V电源兼容USB 2.0全速接口提供USB Type-A到Mini-B数据线SWIM特定功能:
- SWIM接口支持1.65 V至5.5 V的应用电压
- 支持SWIM低速和高速模式
- SWIM编程速率:低速时为9.7 kbyte/s,高速时为12.8 kbyte/s
- SWIM可连接到具有ERNI标准连接器的应用程序 ◦
- 垂直连接器参考:284697或214017。
- 水平连接器参考:214012
- SWIM电缆可连接到具有引脚头或2.54 mm间距连接器的应用程序
- JTAG / 串行线调试(SWD)特定功能:
- JTAG / SWD接口支持1.65 V至3.6 V的应用电压和5 V容忍输入
- JTAG电缆可连接到标准的JTAG 20针2.54 mm间距连接器
- JTAG支持
- 支持SWD和串行线查看器(SWV)通信
- 直接固件更新支持(DFU)
- 在与PC通信期间状态LED闪烁
- 工作温度范围从0°C到50°C
- 1000 Vrms高绝缘电压(仅适用于ST-LINK / V2-ISOL)
其中5V,3V是正极(这里需要注意,通过STM8的数据手册得知STM8既可以5V供电也可以3,3V供电,但是在以后使用STM32时需要注意,STM32不可以使用5V供电,只能使用3.3V供电),GND是接地负极,这两个是之前上课讲过的,也是最重要的构成电路回路的部分。关于RST,SWIM,SWDIO,SWCLK大家可以查看数据手册,STM8需要连接的是RST和SWIM。如下图5-2:
图5-2 ST-Link丝印
我们打开本开发板的烧录接口原理图如图5-3(因考虑本开发板是老师学长辛苦绘制出来的,暂且不在此处放置全部原理图,请大家在班群自行下载),大家可以看到原理图的网络标识都有与ST-Link相对应的,只需要对应连接即可。
图5-3 ST-Link原理图
下图为实物连接图,如图5-4:
图5-4 实物图连接
六、连接LED
我们现在已经成功将ST-Link与STM8连接到一起了,今天的目标是点亮LED,我们现在进行硬件连接的最后一步,连接LED。首先我们同样的先查阅LED的原理图,如图6-1:
图6-1 LED原理图
我们可以看到LED2与LED3他们一端共地一端连接的是1,2号排针,由此可以分析出,只需要给1,2号排针释放一个高电平即可点亮LED2与LED3。现在问题来了,LED4与LED5他们一端是3,4号排针好像没有什么问题,但是另一端他们却是VCC-MCU,那这个VCC-MCU是什么呢?我们可以仔细查阅电源电路原理图,在原理图中已经标注了VCC-MCU是单片机电源,如图6-2。
图6-2 电源电路
那我们找到STM8S208MB数据手册看一下单片机电源的引脚的部分,先看数据手册中的符号和缩写说明,如图6-3:
图6-3 符号和缩写说明
通过图6-3得知,S为供电引脚,我们找出所有供电引脚查看说明,如图6-4:
图6-4 数据手册(引脚)
从而我们分析上面LED电路原理图,如果我们想给LED3和LED4点亮,就需要给LED的两端实现电势差,从而使电流流动,他们的一端是高电平,那只需要给另一端设置低电平即可点亮LED3和LED4。
那我们现在的电路已经分析清楚了,那我们只需要给4个排针分别连接一个单片机的GPIO即可完成控制电路,我这里选择的是PI0-4,如图6-3:
图6-3 LED实物连接图
七、程序编写
在下载完IAR之后,我们只需要编写一个很简单的设置GPIO高低电平的程序即可完(获)成(得)点(点)亮(灯)LED(大师)的任(成)务(就),根据刚才分析完的电路,我们需要将PI0,PI1设置成高电平PI2,PI3设置成低电平。由于大家没有学习过寄存器编程,本人不在这里过多赘述,CV一遍代码即可实现。在写代码之前,我先教大家如何配置好IAR的编程环境。按照以下图片流程即可,我就不标图序号了(别管,我懒)。
OK,好的恭喜大家,距离点亮4个LED仅差最后一步CV代码,烧录的按钮就是倒数第二个图标,绿色的小三角,代码我直接奉上:
#include "iostm8s208mb.h" //调用STM8S208MB头文件int main()
{while(1){PI_DDR=0x0F; //设置输出PI_CR1=0x0F; //设置推挽模式PI_CR2=0x00; //设置频率PI_ODR=0x03; //设置PI0,PI1为高电平,PI2,PI3低电平}
}
最后实物效果如下,如果失败了一定是你的焊接出了问题,绝对不是我太菜了:
恭喜你解锁了点灯大师的成就,你距离点亮mos又进了一步。加油吧骚年!