嵌入式开发三:STM32初体验

本节主要向大家介绍如何开发过程中的基本操作,如编译、串口下载、仿真器下载、仿真调试程序,体验一下 STM32 的开发流程,并介绍 MDK5 的一些使用技巧,通过本节的学习,将对 STM32 的开发流程和 MDK5 使用有个大概了

      本节主要向大家介绍如何开发过程中的基本操作,如编译、串口下载、仿真器下载、仿真调试程序,体验一下 STM32 的开发流程,并介绍 MDK5 的一些使用技巧,通过本节的学习,将对 STM32 的开发流程和 MDK5 使用有个大概了解,为后续深入学习打好基础,这节内容丰富,从零入门,认真学习,边学边实践。

目录

一、 使用 MDK5 编译例程

二、使用串口下载程序

2.1 串口下载程序须知

2.2 STM32下载方式介绍 

2.3 利用串口给STM32下载程序的步骤 

2.3.1  串口下载硬件连接简易图

2.3.2  串口下载硬件连接事物图

2.3.3 配置下载串口下载程序工具/软件(ATK-XISP.exe)

2.3.4 STM32的启动模式分析(M3、M4)

2.3.5 串口下载一键电路(了解)

三、 使用 DAP 下载与调试程序

3.1使用DAP下载程序

3.1.1 DAP下载程序硬件连接

3.1.2 在MDK上配置DAP

3.2使用DAP仿真调试程序(掌握)

3.2.1 仿真界面简单介绍

3.2.2 具体展示调试过程

3.3仿真调试注意事项

四、 MDK5 使用技巧

4.1文本美化

4.2语法检测&代码提示(掌握)

4.3代码编辑技巧(掌握)

4.3.1 TAB键的妙用

4.3.2 快速跳到函数/变量被定义的地方

4.3.3 快速注释与快速取消注释

4.4 查找替换技巧

4.4.1 快速打开头文件

4.4.2 查找替换功能

4.4.3 跨文件查找功能

五、工程编译问题定位

六、窗口视图管理

一、 使用 MDK5 编译例程

     我们在编写完代码以后,需要对代码进行编译,编译成功以后,才能下载到开发板进行验证、调试等操作。记住一句话:从底层讲,我们是通过对寄存器进行配置(向寄存器写入数据或者读取寄存器的数据),从而实现对外部电路的控制,进而实现不同的功能。

STM32的编程方式主要有以下3种:

(1)基于寄存器(2)基于标准库(固件库)(3)基于HAL库;

1. 基于寄存器:基于寄存器是学习单片机的基础,直接操作配置寄存器,从而实现选择不同的功能,比如8位的51单片机,32位的stm32单片机;

2. 基于标准库:STM32有非常多的寄存器,因此直接通过寄存器导致开发困难,所以ST公司就为每款芯片都编写了一份库文件,也就是工程文件里的stm32F4xx...之类的。在这些.c和.h文件中,主要包括一些常用量的宏定义,把对应的每个外设的寄存器封装成结构体来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式,我便是基于这种标准库的方式。

3. 基于HAL库:HAL 库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction
Layer (抽象印象层)。库如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效。

打开我们提前创建好的工程,如下图所示:


关于这里面的文件夹的作用是什么,主要包括哪些,后续会专门详细介绍,双击project.uvprojx项目文件,便可打开整个工程!进入 MDK IDE 界面,如图所示:

① 是部分编译按钮,表示编译当前工程项目文件,如果之前已经编译过了,则只会编译有改动的文件。所以一般第一次会比较耗时间,后续因为只编译改动文件,从而大大缩短了编译时 间。该按钮可以通过 F7 快捷键进行操作。

② 是重新编译当前工程所有文件按钮(全局编译),工程代码较多时全部重新编译会耗费比较多的时间, 建议少用。 按①处的按钮,编译当前项目,在编译完成后,可以看到如图所示的编译提示信息: 

图中:

Code:表示代码大小,占用 1412 字节。

RO-Data:表示只读数据所占的空间大小,一般是指 const 修饰的数据大小。

RW-Data:表示有初值(且非 0)的可读写数据所占的空间大小,它同时占用 FLASH(存 放其初始值)和 RAM 空间。

ZI-Data:表示初始化为 0 的可读写数据所占空间大小,它只占用 RAM 空间。

       因此图的提示信息表示:代码总大小(Program Size)为:FLASH 占用 1820 字节(Code+ RO + RW),SRAM 占用 1632字节(RW + ZI);成功创建了 Hex 文件(可执行文件,放在 Objects目录下);编译 0 错误,0 警告;编译耗时 1 秒钟。 编译完成以后,会生成 Hex 可执行文件,默认输出在 Objects文件夹下,如图 所示: 

注意:必须编译成功,才会生成 Hex 可执行文件,否则是不会有这个文件的 !! Objects 文件夹下除了.hex 文件还有很多其他文件(.axf、.htm、.dep、.lnp、.o、.d、.crf 等), 这些文件是编译过程所产生的中间文件,我们将在后续的.map 文件分析给大家详细介绍这些文件的作用。至此,例程编译完成。简单总结如下:

二、使用串口下载程序

2.1 串口下载程序须知

1.  M3、M4、M7开发板支持串口下载程序,但是ATK-XISP.exe软件只支持下载到内部
FL ASH。
2.  STM32的ISP下载,常用串口1下载程序。
3   因为使用USB虚拟串口,所以事先得安装CH340 USB虚拟串口驱动。

2.2 STM32下载方式介绍 

       经过以上对比,因此我们推荐使用 SWD下载,强烈推荐大家购买一个仿真器(如ST LINK、 CMSIS DAP 等),可以极大的方便学习和开发。不推荐使用串口下载(速度慢、无法仿真和调 试)和 JTAG 下载(占用 IO 多)。

2.3 利用串口给STM32下载程序的步骤 

      接下来,我们将向大家介绍,如何利用串口给 STM32 下载代码。 STM32 通过串口 1 实现程序下载,开发板通过自带的 USB 转串口来实现串口下载。看起来像是 USB 下载(只需一根 USB 线,并不需要串口线)的,实际上,是通过 USB 转成串口, 然后再下载的。

2.3.1  串口下载硬件连接简易图

2.3.2  串口下载硬件连接事物图

      下面,我们就一步步教大家如何在实验平台上利用 USB 串口来下载代码。 首先确保开发板接线正确,并成功上电,默认的出厂设置如图所示:

a) ①处的 USB_UART 通过 USB 线连接电脑,实现 USB 转串口,同时支持给开发板供电。 b) 确保电源灯②亮起(蓝色),如果不亮检查供电和电源开关③是否按下? 

c) 确保 P4 端子的 RXD 和 PA9(STM32 的 TXD),TXD 和 PA10(STM32 的 RXD)通过 跳线帽连接起来(标号④),这样我们就把 CH340C 和 STM32 的串口 1 连接上了。

d) ⑤处的 BOOT 设置为 BOOT0(简称 B0)和 BOOT1(简称 B1)都接 GND(一键下载 电路自动控制,待会介绍)。

由下表STM32启动模式可知,使用串口下载 STM32 程序需要修改 BOOT 的设置,四个步骤如下: 1.  把 B0 接 V3.3    2.  保持 B1 接 GND   3.按一下复位按键     4.使用上位机软件下载代码 。

       通过这几个步骤,我们就可以通过串口下载代码了,下载完成之后,如果没有设置从0X08000000 开始运行,则代码不会立即运行,此时,你还需要把 B0 接回 GND,然后再按一次 复位,才会开始运行你刚刚下载的代码。所以整个过程,你得跳动 2 次跳线帽,还得按 2 次复 位,比较繁琐。而我们的一键下载电路,则利用串口的 DTR 和 RTS 信号,分别控制 STM32 的 复位和 B0,配合正点原子团队研发的上位机软件 ATK-XISP,设置:DTR 的低电平复位,RTS 高电平进 BootLoader,这样,B0 和 STM32 的复位,完全可以由下载软件自动控制(B0 和 B1 使用一键下载电路后从始至终只需接 GND 即可),从而实现一键下载。

2.3.3 配置下载串口下载程序工具/软件(ATK-XISP.exe)

       串口程序下载需要用到:ATK-XISP 这个上位机软件。这个软件可以实现对 STM32F1 到 STM32H7 等系列芯片的串口编程。STM32 串口下载软件(ATK-XISP),如图所示:

双击打开 ATK-XISP,进行如图所示的设置: 

配置过程主要为以下四个:

① 搜索串口选择 CH340 虚拟的串口(我的是 COM23,不同电脑可能不同,需要根据实际情 况选择对应的串口),然后波特率我们推荐设置为 76800,速度过快可能会导 致下载失败。

② 选择 编译生成的 hex 文件(在 Objects文件夹)

③ 勾选校验和编程后执行两项,可以保证下载代码的正确性,并下载完后自动运行,省去按复位的麻烦。注意:千万不要勾选:使用 RamIsp 和连续烧录模式!否则下载失败!

④ 选择 DTR 的低电平复位,RTS 高电平进 BootLoader(别选错!),以匹配一键下载电路, 实现一键下载代码,省去设置 BOOT0、按复位的麻烦。

       设置好之后,我们就可以通过按开始编程(P)这个按钮,一键下载代码到 STM32 上,下 载成功后如图 所示: 

      图中,我们圈出了 ATK-XISP 对一键下载电路的控制过程,先是获取芯片信息,然后 对全片擦除,还显示了文件的首地址以及文件大小等。 另外,下载成功后,会有“共写入 xxxxKB,进度 100%,耗时 xxxx 毫秒”的提示,并且从 0X80000000 处开始运行了。此时表示代码下载完成,并已经成功运行了,我们查看开发板就可以看到 DS0(红灯)、DS1(绿灯)开始交替闪烁了,如图所示: 

至此,STM32 使用串口下载程序完成。 

2.3.4 STM32的启动模式分析(M3、M4)

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754858200a5208621.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信