STMCU小助手
发布时间:2021-12-19 14:00
|
5.1 初学者重要提示 如果使用JLINK调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持。 如果使用STLINK调试下载STM32H7,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。6 R9 l7 c' [ {: @) M$ b3 B+ @+ x, p MDK曾发布的STM32F1,F407,F429和F7的所有调试方法的设置细节及其注意事项,同样适用于STM32H7。! \1 s% B D$ {# i9 w0 d( y MDK5调试过程中容易崩溃的问题,请看本章5.4小节,比较重要。7 Y0 v; B+ [. |7 w JLINK无法下载解决思路以及常见问题整理,适用于其它LINK。 5.2 使用MDK调试和下载程序设置(JLINK) 调试下载STM32H7,务必使用JLINK V9或V10,之前的版本已经不支持,JLINK的驱动安装等相关文件已经在本教程第2章的2.5章节有说明。" t$ @0 Z3 x8 D / e! S5 o' N! v, z- L 在上个章节里面,我们已经将Options对话框里面大部分设置选项都做了说明,本章节主要是调试下载的设置。 5.2.1 开发板和JLINK的接线图# R2 I$ b/ ~6 L$ d* ?/ {6 A: c 开发板接上JLINK的效果图如下,JLINK端需要插入开发板赠送的JTAG转SWD转接板:% R' K+ }# k; [) P ; H4 e6 K# M/ L# @: U
注意转接板不要插反了:: s' |" Q' W- Q# L/ t " \" V3 g5 J9 s& ~1 f1 R
4 B/ r3 ~" Q8 p 5.2.2 设置Options里面的Debug选项3 o5 s5 F- C% b Debug选项主要用于调试设置。
打开Settings设置选项,设置完毕后别忘了点击确定。 1 v5 r$ V. ?7 i' |8 a& Y( B2 N
5.2.3 设置Options里面的Utilities选项 Utilities选项主要用于程序下载设置。
6 F0 Q6 i3 C% x" g 5.2.4 程序下载: Y( z' D6 H# w5 _9 g" M- ` 前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电,就可以下载了。点击这里就可以下载了:- m) ^ ]6 C5 E. J$ h3 ] S4 a9 W2 K9 |! |3 F3 F2 u6 b% F
7 P* z8 e8 M, S; B. c: V 下载成功后可以看到开发板上的LED开始闪烁,MDK的也有信息展示:. V3 k4 W9 l1 B6 i( }/ Y4 A 7 g! ]# S; m6 u+ q4 Y3 |8 N- j
/ T1 G% z7 |/ Z$ y% @' c- a! q 5.3 使用MDK调试和下载程序设置(STLINK) 调试下载STM32H7,请将STLINK固件升级到最新版,关于固件升级和驱动安装等相关文件已经在本教程第2章的2.6章节有说明。 在上个章节里面,我们已经将Options对话框里面大部分设置选项都做了说明,本章节主要是调试下载的设置。: C6 l9 P$ K: ?( b* @ 5.3.1 开发板和STLINK的接线图- }( ~& K8 [+ y- [9 ^ 开发板接上STLINK的效果图如下:
如果是下面这种STLINK,需要接上转接板:0 y: t- t' z) S
- Q% Y8 c7 l# T; S5 ^ 5.3.2 设置Options里面的Debug选项 Debug选项主要用于调试设置:' ]' V' {& R+ N
打开Settings设置选项,设置完毕后别忘了点击确定。 ^9 ` f- u1 f9 D/ h
2 ]+ B& n9 R7 b P% J 5.3.3 设置Options里面的Utilities选项% T m8 e6 n$ ]$ S- B, y, e& x5 ? Utilities选项主要用于程序下载设置。! C& l2 U7 Y3 J
5.3.4 程序下载7 C7 N3 {' F6 q5 H$ P 前两步设置好之后,JLINK插到电脑端并跟开发板连接好,将板子上电就可以下载了。点击这里即可:
/ ]$ M/ g& H V: B5 g 下载成功后可以看到开发板上的LED开始闪烁,MDK的也有信息展示:5 B" G& B% n- F) a: ^% H+ ^ / y/ t8 W5 r' _) G4 @) J c
5.4 MDK调试容易崩溃的解决办法 进入到MDK5.2X后,MDK调试的时候很容易崩溃,出现下面这个错误: U. {% P4 v' @) m6 b. r' P9 M$ r* h" P / l* \9 X. ?: s- D
2 E7 d( w. Y$ d1 D 出现这个错误的话,要注意下面两个问题:+ k8 H& h+ [6 D1 ]5 z c7 p9 o$ a , ~. R( H7 J" l' ?- A9 a, o$ ? F 如果出现这种情况的话,将工程放在桌面路径下,工程名不要有中文会好很多。路径深或者有中文,都会造成这种情况。 退出调试的时候,如果使用断点了,务必清除所有断点,再退出,否则也会造成这种情况。 5.5 MDK程序调试 JLINK或者STLINK设置完毕后,调试是一样的。& m8 V/ W. K" ^6 K/ w! C5 ] - x( D% _/ f' W4 |8 {( |# } 5.5.1 全速运行和单步调试- E8 s) Q8 e( R0 O5 A7 ] X 点击如下按钮可以进入调试状态:
+ |8 e! t# |6 x* w6 _/ y 进入调试状态后的效果如下:/ M5 p0 [9 V8 m& n+ b) }1 R- n/ u : H% a' \/ K# s4 Q* G
* g" e: O9 C2 ] 首先要认识下这7个图标的含义:
第1个图标是复位调试。 第2个图标是全速运行。" K5 |, k+ q. ] 第3个图标是进入全速运行状态后,通过这个图标可以停止全速运行。 第4个图标是Step(Step one line),单步调试,每次点击运行一行代码,所以只要有子函数就会进入。3 Y }, ~% ~0 b) ^ 第5个图标是Step Over(Step over the current line),每次点击以函数为单位运行,不会进入函数内部。 第6个图标是Step out(Step out of the current line),点击后退出当前运行的函数,执行下一个函数。% a$ H/ h/ |9 R3 A3 Z5 \ 第7个图标是Run to Cursor Line(Run to the current cursor line),直接运行到用户设置的行,设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头
4 u9 j; L. P; G; f1 u( R) u 然后点击此图标即可,可以看到前面多了一个黄色的小箭头,说明已经运行到此行6 m9 u1 q& z. t$ z , U8 T5 ?+ ~; z& [/ |
& j7 E7 d5 Y5 H4 O2 s9 ?3 W) C 前面几个图标的功能,大家多测试几次就熟练了。 5.5.2 外设寄存器的查看2 C5 P. v; i* R$ y" @4 s! |4 E 要查看的外设寄存器内容在这个菜单里面:
如果要查看内核外设寄存器,在这里:4 a/ L- N4 X: j* r! Z$ c
5.5.3 全局变量的查看 针对全局变量,MDK专门提供了Watch1和Watch2两个窗口,每个窗口可以添加很多变量。调试过程中,这些窗口里面添加的变量是会更新的。+ ?& x9 p" p* s# V* T- o% G
6 B8 q( y$ E* H. f: } 也可以从菜单View ->Watch Windows进行添加。比如下面添加一个简单的全局计数变量。% i( Z% u: W" K3 l9 G 5 z9 ^- U* O* L0 M/ o5 B2 K: x& v
3 F. z/ ~( V* F$ [: U 5.5.4 局部变量的查看 针对局部变量,MDK专门提供了一个栈窗口,用于查看函数中各种局部变量,这个不需要用户添加,MDK会自动添加。
也可以从菜单View ->Call Stack Window进行添加。局部变量需要进入到那个函数里面才可以查看,这点要特别注意,因为局部变量是来自栈空间的,进入函数申请占空间,退出函数后,栈空间就会被释放掉。比如main函数里面一个num局部变量:
5.5.5 Flash区或者RAM区的查看 如果要查看Flash区或者RAM区的内容,MDK提供了4个Memory窗口。
也可以从菜单View ->Memory Windows进行添加。比如要查看0x0800 0000地址开始的内容,直接输入即可,这个地址是STM32H7的Flash首地址: . I* e( C; T; c* r7 D8 P
. d- V. o; p9 W* ? 5.5.6 断点调试9 x' V" }7 {3 a9 Y 断点调试比较重要,进入调整状态后,如果大家想让程序在指定的位置停止运行,可以添加断点,通过这个小红点来添加。; H& u C( {) @- S" |) x
3 a$ [" L9 q" w" X$ W: H" p3 k 比如想在84行添加断点。
用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头:! J' q0 S9 u0 v2 m
然后点击那个小红点,可以看到已经添加上:
# B9 {! [/ z* S0 x) R- q9 r 然后点击全速运行,如果程序有执行到这个地方,就会停在这里。可以看到黄色小箭头也显示在左侧了,说明程序执行这个地方了:' v! l5 m; a' z4 ^& E/ d6 z , e3 M/ q6 t4 J
正常情况下,断点可以加到任何程序代码可以执行到的地方。另外注意,退出调试前,点击这个按钮取消所有断点,防止MDK调试期间崩溃:
5.5.7 寄存器,全局变量和局部变量的动态更新# P! E$ Z( A; s MDK有个周期性更新选项,如果大家要周期性的观察一些寄存器、全局变量的更新、需要把菜单View -> Periodic Window Update选上。& a) e. j H# B8 n3 L # C* L$ c, S+ H5 F
这个周期不能设置,大概0.5s左右更新一次。$ x6 p" t3 }3 z" U6 I# I 5.6 总结$ n- a( @" Z7 Y+ t" X% K 对于初学者来说,务必要实际动手操作一遍。特别是调试方法,要熟练掌握,因为以后工程代码调试时,用到的最多。, [' T; s7 R1 B2 \' | ) z) n. _5 K& E/ F O 7 l* ?, r; b+ z Z; y: T% u; `, q |
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
微信公众号
手机版