STM32L4系列三、程序下载与调试

记录一下,方便以后翻阅~

主要内容:
1、STM32L4 程序下载并运行;
2、STM32L4 在线调试。

一、STM32L4 程序下载
ST LINK支持JTAG和SWD两种通信接口,同时STM32L475也支持JTAG和SWD。所以有 2 种方式用来下载代码,由于JTAG模式占用的 IO线比较多,且板载的ST LINK与 MCU(STM32L475VET6)通过 SWD 连接,所以选择 SWD 模式来给STM32L475下载代码。
首先,需要安装ST LINK 的驱动(这里不做过多介绍)。
安装ST LINK驱动后,只需一根Micro USB线将开发板的ST_LINK USB接口与电脑进行连接就可以了。
打开Keil MDK软件,单击Options for Target,在Debug栏选择仿真工具为ST-Link Debugger,如下图所示:
在这里插入图片描述
上图中,勾选Run to main()的目的是:只要点击仿真就会直接运行到 main 函数,如果没选这个选项,则会先执行 startup_stm32l475xx.s 文件的Reset_Handler,再跳到 main函数。
点击 Settings,设置ST LINK的参数,如下图所示:
在这里插入图片描述
使用ST LINK的 SW 模式调试(一定要选择SW模式!)Max Clock设置最大,即4Mhz。(如果USB 数据线比较差,可能会出问题,此时,可以通过降低这里的速率来试试。)单击OK,完成设置。
接下来,在Utilities选项卡里面设置下载时的目标编程器,如下图所示:
在这里插入图片描述
直接勾选 Use Debug Driver,即和调试一样,选择ST LINK来给目标器件的FLASH 编程,然后点击 Settings,设置如下图所示:
在这里插入图片描述
MDK5 会根据新建工程时选择的目标器件,自动设置 flash 算法。本例程使用STM32L475VET6,FLASH 容量为 512K 字节,所以 Programming Algorithm 里面默认会有512K型号的STM32L4xx_512KB FLASH 算法。
注意:这里的512K flash算法,不仅针对512K容量的 STM32L475,对于小于 512K FLASH 的型号,也是采用这个flash算法。
最后,选中Reset and Run选项,以实现在编程后自动运行,其他默认设置即可。

回到IDE界面,编译一下工程。然后点击Download,就可以下载代码到 STM32L475上面了,如下图所示:
在这里插入图片描述
下载完后,会自动运行刚刚下载的代码,接下来可以打开串口调试助手,验证是否收到了 STM32L475 串口发送出来的数据。
由于开发板上的ST LINK也具有串口功能,程序下载和串口功能只需要一根线就可实现,如果电脑上没有安装STM32虚拟串口驱动,需要先安装驱动后电脑才能识别到串口。

本例程实验实现功能是不停地向PC发送递增数据,如下图所示:
在这里插入图片描述
二、STM32L4 在线调试
用调试工具,如JLINK(注意:必须是JLINK V9或以上版本!)、ULINK、STLINK 等,可以实时跟踪程序,从而找到程序中的bug。以ST LINK为例,介绍如何选择SWD方式在线调试STM32L475。
在MDK的IDE界面,编译工程。然后点击Start/Stop Debug Session按钮(如下图红圈所示),开始仿真:
在这里插入图片描述
因为之前勾选了 Run to main()选项,所以程序直接就运行到了 main 函数的入口处。 另外,此时 MDK 多出了一个 Debug工具条,其部分按钮的功能如下图所示:
在这里插入图片描述
1)复位:其功能等同于硬件上按复位按钮。相当于实现一次硬复位。按下该按钮之后,代码会重新从头开始执行;
2)执行到断点处:用来快速执行到断点处,前是你在查看的地方设置了断点;
3)停止运行:此按钮在程序一直执行的时候会变为有效,通过按该按钮,可使程序停止下来,进入单步调试状态;
4)执行进去:用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的;
5)执行过去:在碰到有函数的地方,通过该按钮可单步执行过这个函数,而不进入这个函数单步执行;
6)执行出去:在进入函数单步调试时,当不必再执行该函数的剩余部分,通过该按钮直接一步执行完函数余下的部分,并跳出函数;
7)执行到光标处:可迅速使程序运行到光标处,类似执行到断点处功能,区别是:断点可有多个,但光标所在处只有一个;
8)汇编窗口:查看汇编代码;
9)堆栈局部变量窗口:显示 Call Stack+Locals 窗口,显示当前函数的局部变量及其值,方便查看。
10)观察窗口:该按钮按下,会弹出一个显示变量的窗口,输入想要观察的变量/表达式,即可查看其值;
11)内存查看窗口:该按钮按下,会弹出一个内存查看窗口,可在里面输入你要查看的内存地址,然后观察这一片内存的变化情况;
12)串口打印窗口:该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容;
13)逻辑分析窗口:一般用逻辑分析窗口(Logic Analyzer),通过SETUP新建一些IO口,观察这些IO口的电平变化,以多种形式显示;
14)系统查看窗口:提供各种外设寄存器的查看窗口,选择对应外设,即可调出该外设的相关寄存器表,并显示这些寄存器的值;
Debug工具条上的其他按钮用的较少,这里就不介绍了。
注意:串口打印窗口和逻辑分析窗口仅在软件仿真的时候可用,而 MDK5 对STM32L475 的软件仿真,基本上不支持,基本上这两个窗口用不着。但是对 STM32F1 的软件仿真,MDK5 是支持的,在 F1 开发的时候,可以用到。

在仿真界面里面调出:堆栈局部变量窗口。如下图所示:
在这里插入图片描述
把光标放到 main.c 的第33行左侧的灰色区域,按下鼠标左键,放置一个断点(红色的实心点,也可以通过鼠标右键弹出菜单来加入),再次单击则取消。然后点击,执行到该断点处,如下图所示:
在这里插入图片描述
点击菜单栏的 Peripherals→System Viewer→USART→USART1。可看到有很多外设可以查看,这里查看串口 1 的情况,如下图所示:
在这里插入图片描述
单击 USART1 后会在 IDE 右侧出现一个如下图所示的界面:
在这里插入图片描述
上图是STM32的串口1的默认设置状态,可以看到所有与串口相关的寄存器全部显示出来。
单击一下执行过去,执行完串口初始化函数,得到如下图所示的串口信息:
在这里插入图片描述
对比上面两张图,可以查看串口1的各个寄存器设置状态的变化,从而判断所写的代码是否有问题。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天亮继续睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值