本篇博文目录:
- 一.程序的编译
- 二.程序的下载
- 1.ISP方式
- 2.JTAG方式
- 3.SWD方式
- 4.SWIM方式
一.程序的编译
Keil uVision5 工具中有四个编译如图,他们分别表示什么意思,下面进行介绍,解释来源于<<零死角玩转stm32>>。
- 第一个按钮: Translate 就是翻译当下修改过的文件,说明白点就是检查下有没有语法错误,并不会去链接库文件,也不会生成可执行文件。
- 第二个按钮: Build 就是编译当下修改过的文件,它包含了语法检查,链接动态库文件,生成可执行文件。
- 第三个按钮: Rebuild 重新编译整个工程,跟 Build 这个按钮实现的功能是一样的,但有所不同的是它编译的是整个工程的所有文件,耗时巨大。
综上:当我们编辑好我们的程序之后,只需要用第二个 Build 按钮就可以,即方便又省时。第一个跟第三个按钮用的比较少。
对于前面3个按钮<<零死角玩转stm32>> 进行了介绍,但是对于第四个按钮并没有进行介绍,因为该书使用的是Keil uVision4,对于这部分的介绍来源于这篇博文:https://blog.csdn.net/weixin_41344412/article/details/114151424。
综上:对于第四个按钮,在一个workbench下有多个项目时进行使用,当一个workbench下有多个项目需要同时进行Build 时,就可以点击第四个按钮的Batch Build进行编译。
程序的编译主要是生成单片机需要的.hex文件
项目输出文件的hex文件目录是可以进行设置的,首先点击然后选择,最后点击按钮即可选择相应目录。
程序的编译前不要忘了勾选,否则无法生成相应的hex文件,至于更多的设置请参照这篇博文零死角玩转stm32初级篇3-从零创建STM32工程模板。
二.程序的下载
常见的程序下载方式有ISP,SWD,SWIM和 JTAG下载,具体使用哪一种下载方式需要根据硬件设计来看,如果硬件设计的程序下载方式有多种时,则选择其中的一种进行下载即可,我们怎么知道单片机上面有几种程序下载方式了,最直接的方式就是通过看硬件原理图,所以我们首先需要知道则四种方式的硬件接线图;对于这四种方式来源于这篇博文程序如何下载到单片机中?单片机常用的四种烧写程序方式介绍。
1.ISP方式
ISP方式这种烧写方式是通过单片机的UART串口来实现的,所需要的工具也比较简单USB/TTL。这个USB/TTL的芯片可以通过MAX232、CH340G等芯片来实现,通过MAX232实现的UART烧写电路如下所示:
当然上面的接线图看起来或许比较复杂,一般我们只需要留出MCU的TXD,RXD和GND即可,然后在淘宝上面买一个USB/TTL的烧写器,将烧写器的TXD和单片机的RXD相连,烧写器的RXD和单片机的TXD相连,最后再连接GND即可;转换模块的5V也可以给单片机提供电源,有时可能因为模块电压不足出现电脑无法识别的情况,这时需要再额外接一根3.3V电源线到模块和单片机板子上(有可能是我的转换器被烧过,如果不接3.3V的话会出现电脑无法识别的情况,接一根3.3V就可以了)。
上图说的boot0接到VCC出,指的是STM32的最小模块上的帽扣,如下图所示(
一定不要忘了:烧写时将boot0接到VCC,烧写完后重写接到GND
):
在结合该最小系统帽扣的原理图就更加明了
对于硬件是否有ISP方式,我们看最小系统中是否额外留出TXD,RXD和GND。
按到上面硬件的连接图将单片机和PC进行连接,由于ISP方式并不能够直接通过Keil uVision5软件进行程序的烧写,而是需要依靠其他第三方软件 FlyMcu进行程序的烧写,你可以参照这篇博文进行了解使用FlyMCU往STM32中烧写程序,使用FlyMcu进行程序烧写时,经常会遇到芯片超时问题,你可以试试这篇博文的解决方法关于flymcu烧录stm32芯片超时的问题解决。
2.JTAG方式
JTAG接口是一种标准的测试协议,可以实现编程时在线调试,利用单步追踪可以很方便的查找代码的Bug,大多数的单片机都支持这种接口。这种接口除了电源线和复位引脚之外,还要用到单片机的四个引脚,分别是:TDI、TMS、TCK、TDO,他们所代表的含义如下所示:
- TDI–数据输入,所有写入寄存器的数据都是通过TDI接口串行输入的;
- TMS–模式选择,Jlink输出给目标CPU的时钟信号;
- TCK–时钟信号,所有数据的输入输出都是以该时钟信号为基准的;
- TDO–数据输出,所有从寄存器读出的数据都是通过TDO接口串行输出的;
以上这四个引脚都是协议里强制要求的(
意思就是上面四个引脚必须进行连接
),而且协议建议在设计电路时要选用上拉电阻。JTAG接口有多种形式,常用的20引脚、14引脚和10引脚。以20引脚JTAG为例,所设计的JTAG烧写电路如下图所示:
上面的连接图看起来或许比较麻烦,我们可以直接在淘宝上搜索JTAG下载器或jlink仿真器,直接看产品的详细信息即可。
如果硬件单片机留出来的是引脚排针,按到下图进行连接即可:
当然大多数情况都是使用如下这种排座形式,这种方式直接插上去就可以了:
使用JTAG方式进行程序的烧写并不需要其他第三方软件,可以直接通过Keil uVision5进行程序烧写,你可以参照这篇博文KIEL 5如何烧录程序到STM32芯片。
使用JTAG方式进行烧写前,需要安装相应的驱动,在商品的详情界面有相应驱动的百度网盘地址或者直接找客户要即可。
3.SWD方式
SWD是一种串行调试接口,与JTAG相比,SWD只需要两根线,分别为:SWCLK和SWDIO。他们的含义如下:
- SWDIO–串行数据线,用于数据的读出和写入;
- SWDCLK–串行时钟线,提供所需要的时钟信号;
一般来说,大多数单片机的JTAG接口和SWDIO接口是复用的,SWD也是用J-Link工具来实现的。所以在使用的时候,只需要在软件界面做一下选择,使用SWD方式还是JTAG方式,硬件上无需改动。除了J-Link外,意法半导体的ST-Link也是支持SWD模式的。
当然有时候也会有没有复用的接口,对于单独的SWD方式我们只需要将单片机和连接器对应引脚相连即可。
- 单片机上的SWD的四个引脚VCC3V3,SWDIO,SWDCLK,GND
- 连接器如下图所示,下面分别指出了相应的引脚说明,和上面单片机的对于相连即可
SWD方式与JTAG方式相同的是也不需要其他第三方软件,可以直接通过Keil uVision5进行程序烧写,你可以参照这篇博文KIEL 5如何烧录程序到STM32芯片。
4.SWIM方式
这种下载方式是针对STM8系列的单片机,这种方式只需要一根线即可实现程序的下载,所使用的工具为ST-Link,如下图所示:
从淘宝的详情界面可以看到,该方式有四根线TVCC,SWIM,GND和REST(
实际只需要一根SWIM
),只需要和单片机对应引脚相连即可。
对于程序的烧录,你可以通过这篇博文进行了解为了更快普及STM8,我做了一个STM8串口下载程序教程。
上面这个教程使用的是STVP软件,你可以通过这篇博文进行了解STM32下载编程工具 | STVP介绍、下载、安装和使用教程