
5.1 初学者重要提示2 b4 G4 @5 A2 o$ g 如果使用JLINK调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持。 如果使用STLINK调试下载STM32H7,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。! v, C% R3 m. Z p# y MDK曾发布的STM32F1,F407,F429和F7的所有调试方法的设置细节及其注意事项,同样适用于STM32H7。 MDK5调试过程中容易崩溃的问题,请看本章5.4小节,比较重要。 JLINK无法下载解决思路以及常见问题整理,适用于其它LINK。 5.2 使用MDK调试和下载程序设置(JLINK) 调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持,JLINK的驱动安装等相关文件已经在本教程第2章的2.5章节有说明。) b1 J- E7 s# e" i! Z5 M 在上个章节里面,我们已经将Options对话框里面大部分设置选项都做了说明,本章节主要是调试下载的设置。 7 F4 \9 H3 l4 D! x8 M0 x/ S 5.2.1 开发板和JLINK的接线图* k* ]5 `2 z( m+ U0 w- Y ? 开发板接上JLINK的效果图如下,JLINK端需要插入开发板赠送的JTAG转SWD转接板: ![]() 注意转接板不要插反了: & m, A7 ~, p* a ![]() 5.2.2 设置Options里面的Debug选项 Debug选项主要用于调试设置。8 y4 u$ g1 `! G" ]1 h 1 J5 B. { D0 [0 }* ` ![]() * W9 V" R8 N Q5 S& N9 j% a 打开Settings设置选项,设置完毕后别忘了点击确定。 $ G/ o w+ M6 z7 f6 B, L. |2 t2 I2 B8 a ![]() 5.2.3 设置Options里面的Utilities选项" |+ l# j& ~' r( ?2 P Utilities选项主要用于程序下载设置。& b6 a$ Q2 `3 o& D ![]() 5.2.4 程序下载5 |1 b8 M2 P7 q 前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电,就可以下载了。点击这里就可以下载了: ![]() 1 K! L3 U* h4 G! S3 i' @ 下载成功后可以看到开发板上的LED开始闪烁,MDK的也有信息展示: ![]() ' _9 c% r1 R! o4 H: U 5.3 使用MDK调试和下载程序设置(STLINK): z, a {4 I, R) k6 T; ~ 调试下载STM32H7,请将STLINK固件升级到最新版,关于固件升级和驱动安装等相关文件已经在本教程第2章的2.6章节有说明。* A G6 j- u# [; ]& r! J8 V% H 2 Z) }" S9 W; _" T1 _ 在上个章节里面,我们已经将Options对话框里面大部分设置选项都做了说明,本章节主要是调试下载的设置。 " ~/ A! h6 g* t; Z* H 5.3.1 开发板和STLINK的接线图 开发板接上STLINK的效果图如下: ![]() ' I8 \+ H2 y, }6 Z+ D) n 如果是下面这种STLINK,需要接上转接板: ![]() 2 @3 A o6 U" W/ h a ![]() " W: S, c4 E5 e; v5 U 5.3.2 设置Options里面的Debug选项+ }8 E! b1 S* b" y% l Debug选项主要用于调试设置:, l2 M1 Q# O) s7 R6 n8 Q. ?' f7 q4 W ![]() 1 r2 l' g" z& S: @8 l 打开Settings设置选项,设置完毕后别忘了点击确定。 ![]() # S J) @' s. e3 f 5.3.3 设置Options里面的Utilities选项 Utilities选项主要用于程序下载设置。* R' M3 l% j, u ![]() 5.3.4 程序下载6 r1 U' `. X/ @; E$ B 前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电就可以下载了。点击这里即可: ![]() # T* G5 e2 I& C' O3 w% j% m 下载成功后可以看到开发板上的LED开始闪烁,MDK的也有信息展示: " f0 h" W+ W, \ ![]() 5.4 MDK调试容易崩溃的解决办法0 F6 J8 X7 z5 f: t5 p* Z 进入到MDK5.2X后,MDK调试的时候很容易崩溃,出现下面这个错误" W. T( f, n; i$ @. {1 T0 _ & `/ h; a; q& v r$ H# e/ f1 L# W ![]() 出现这个错误的话,要注意下面两个问题: ! U9 J" V% F1 ]! @4 H 如果出现这种情况的话,将工程放在桌面路径下,工程名不要有中文会好很多。路径深或者有中文,都会造成这种情况。 退出调试的时候,如果使用断点了,务必清除所有断点,再退出,否则也会造成这种情况。& { p2 c- W7 \3 ]. r 5.5 MDK程序调试 JLINK或者STLINK设置完毕后,调试是一样的。 5.5.1 全速运行和单步调试) N, ]$ T8 i8 l 点击如下按钮可以进入调试状态: # N# ^# P, Z5 G ![]() 进入调试状态后的效果如下: # G% x# ]+ V- j0 o2 n0 L: ~ ![]() 首先要认识下这7个图标的含义:4 c# }; ~5 R* D9 P4 S0 T( ? 4 d1 C6 M9 Y- l% R: A! T ![]() 8 Y4 S! s3 W% a$ `+ ]+ ~ 第1个图标是复位调试。7 {5 w- Z; x& n' Z 第2个图标是全速运行。# U0 y- J0 Q3 ?: \ 第3个图标是进入全速运行状态后,通过这个图标可以停止全速运行。2 P w3 b; v0 j2 p 第4个图标是Step(Step one line),单步调试,每次点击运行一行代码,所以只要有子函数就会进入。 第5个图标是Step Over(Step over the current line),每次点击以函数为单位运行,不会进入函数内部。 第6个图标是Step out(Step out of the current line),点击后退出当前运行的函数,执行下一个函数。 第7个图标是Run to Cursor Line(Run to the current cursor line),直接运行到用户设置的行,设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头 i0 e$ d$ x! ~' a; R) J $ } I# r; s2 K; i ![]() 然后点击此图标即可,可以看到前面多了一个黄色的小箭头,说明已经运行到此行 ; L$ ~- g% h* L6 n8 b6 u ![]() 前面几个图标的功能,大家多测试几次就熟练了。) j$ r; [! l$ Y9 B% B 5.5.2 外设寄存器的查看 要查看的外设寄存器内容在这个菜单里面:% B @0 Y- J5 l! y' N1 u ![]() 如果要查看内核外设寄存器,在这里: ! E( n' |8 |: ^9 U ![]() 5.5.3 全局变量的查看$ m$ c2 Y9 J$ V% O) _' H 针对全局变量,MDK专门提供了Watch1和Watch2两个窗口,每个窗口可以添加很多变量。调试过程中,这些窗口里面添加的变量是会更新的。 8 H2 Z( l5 v- f2 E ![]() & E+ m% Z0 c a9 R 也可以从菜单View ->Watch Windows进行添加。比如下面添加一个简单的全局计数变量。 # T! Y; H; \+ j4 V T& ^8 Q4 q ![]() , v( ~0 r: e$ [0 x 5.5.4 局部变量的查看2 ?6 R6 g' ?% t7 b 针对局部变量,MDK专门提供了一个栈窗口,用于查看函数中各种局部变量,这个不需要用户添加,MDK会自动添加。 ( l( r7 r ], A& t0 _; i5 u ![]() , j# x" E- I# ~1 `/ o 也可以从菜单View ->Call Stack Window进行添加。局部变量需要进入到那个函数里面才可以查看,这点要特别注意,因为局部变量是来自栈空间的,进入函数申请占空间,退出函数后,栈空间就会被释放掉。比如main函数里面一个num局部变量:2 S% \# q3 `+ H1 }) z6 y & M# b/ T9 U5 v% I' z8 [" C9 k) ~% s ![]() 5.5.5 Flash区或者RAM区的查看, U" I7 N4 R! [7 g$ C# p, F0 ] 如果要查看Flash区或者RAM区的内容,MDK提供了4个Memory窗口。0 b3 ^7 w8 S8 N- _+ D ![]() ) Q1 i9 u* i7 w; ~) G 也可以从菜单View ->Memory Windows进行添加。比如要查看0x0800 0000地址开始的内容,直接输入即可,这个地址是STM32H7的Flash首地址:' A" Y2 F3 Y+ Z: s ![]() 5.5.6 断点调试$ d9 m! t2 r! D& W2 y/ C1 G1 t/ T 断点调试比较重要,进入调整状态后,如果大家想让程序在指定的位置停止运行,可以添加断点,通过这个小红点来添加。. B4 B- ^* [7 n! E ![]() 0 g, Z7 Y. V% ^1 y6 n 比如想在84行添加断点。5 r7 e" w0 w p' F' u0 r 8 ?# M" i& n4 @1 k( d3 E ![]() 用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头:" k, T# d$ h% w2 b ) N z4 J+ s- y/ O ![]() ! T: O7 Q/ f) @. N. B 然后点击那个小红点,可以看到已经添加上:2 C+ F; A/ h% y& _' h3 H 8 k/ N- e: c/ z: p ![]() 然后点击全速运行,如果程序有执行到这个地方,就会停在这里。可以看到黄色小箭头也显示在左侧了,说明程序执行这个地方了:6 L: y& T7 l# E$ C: u& B! m- m ![]() ) M+ D Y: Z. i! x2 H 正常情况下,断点可以加到任何程序代码可以执行到的地方。另外注意,退出调试前,点击这个按钮取消所有断点,防止MDK调试期间崩溃: ![]() 5.5.7 寄存器,全局变量和局部变量的动态更新 MDK有个周期性更新选项,如果大家要周期性的观察一些寄存器、全局变量的更新、需要把菜单View -> Periodic Window Update选上。 3 m G1 t4 T9 P( [ ![]() 这个周期不能设置,大概0.5s左右更新一次。: p2 l* q7 [: M / a; s& S" i3 [2 r2 { 5.6 总结$ A/ G$ A# _5 O% X+ p# u N 对于初学者来说,务必要实际动手操作一遍。特别是调试方法,要熟练掌握,因为以后工程代码调试时,用到的最多。 ) d. i# d) M) y/ f* e |
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
有奖预约 | STM32H7R7基于RT-Thread RTOS的智能终端GUI解决方案
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
STM32H745I-DISCO串口打印
【STM32H745I-DISCO】TouchGFX探索——3、触屏滑屏操作与中文显示
TouchGFX软件下载及使用
【STM32H745I-DISCO】TouchGFX探索——2、照葫芦画瓢
STM32H745I-DISCO硬件信号为空,M4、M7对于硬件信号的优先性判断