<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Embedded on Yuanye Ma's Blog</title><link>/embedded/</link><description>Recent content in Embedded on Yuanye Ma's Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>yuanye.ma@qq.com (Yuanye Ma)</managingEditor><webMaster>yuanye.ma@qq.com (Yuanye Ma)</webMaster><lastBuildDate>Tue, 06 Mar 2018 16:01:23 +0800</lastBuildDate><atom:link href="/embedded/index.xml" rel="self" type="application/rss+xml"/><item><title>uboot</title><link>/embedded/2018-03-06-uboot/</link><pubDate>Tue, 06 Mar 2018 16:01:23 +0800</pubDate><author>yuanye.ma@qq.com (Yuanye Ma)</author><guid>/embedded/2018-03-06-uboot/</guid><description>&lt;h1 id="uboot"&gt;uboot&lt;/h1&gt;
&lt;h2 id="make-xxx_defconfig"&gt;make xxx_defconfig&lt;/h2&gt;
&lt;h3 id="top-makefile--config"&gt;Top Makefile : %config&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;依赖&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;scripts_basic&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;$(Q)$(MAKE) $(build)=scripts/basic&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$(build) 定义在 scripts/Kbuild.include中&lt;/p&gt;
&lt;p&gt;build := -f $(srctree)/scripts/Makefile.build obj&lt;/p&gt;
&lt;p&gt;即 命令展开为 @ make -f $(srctree)/scripts/Makefile.build obj=scripts/basic&lt;/p&gt;
&lt;p&gt;编译生成了 scripts/basic/fixdep&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;outputmakefile&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FORCE&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;命令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$(Q)$(MAKE) $(build)=scripts/kconfig $@
展开为 @ make -f $(srctree)/scripts/Makefile.build obj=scripts/kconfig xxx_defconfig&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;src = scripts/kconf&lt;/p&gt;
&lt;p&gt;kbuild-dir = scripts/kconf&lt;/p&gt;
&lt;p&gt;kbuild-file = scripts/kconf/Makefile&lt;/p&gt;
&lt;p&gt;include scripts/kconf/Makefile # xxx_defconfig 目标定义在这个文件中&lt;/p&gt;
&lt;p&gt;%_defconfig: $(obj)/conf &lt;br&gt;
$(Q)$&amp;lt; $(silent) &amp;ndash;defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)&lt;/p&gt;
&lt;p&gt;$&amp;lt;表示第一个依赖文件， $^ 表示所有依赖文件， $@ 表示目标&lt;/p&gt;
&lt;p&gt;即展开为 @scripts/kconfig/conf -s &amp;ndash;defconfig=arch/$(SRCARCH)/configs/xxx_defconfig $(Kconfig)&lt;/p&gt;
&lt;p&gt;通过&lt;a href="https://blog.csdn.net/guyongqiangx/article/details/52679635"&gt;对conf源码的分析&lt;/a&gt;，大概知道conf程序用于维护 .config ，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果传入了&amp;ndash;defconfig参数就读取 Kconfig文件生成 .config文件&lt;/li&gt;
&lt;li&gt;如果传入了 &amp;ndash;silentoldconfig （在make 整个u-boot时）则生成以下文件
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;include/generated/autoconf.h&lt;/code&gt; 是C语言头文件，主要影响C语言编译过程。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;include/config/auto.conf.cmd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;include/config/tristate.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;include/config/auto.conf&lt;/code&gt; 被顶层Makefile包含，影响编译过程。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="make"&gt;make&lt;/h2&gt;
&lt;p&gt;&lt;img src="/embedded/2018-03-06-uboot/uboot-make.png" alt="uboot-make"&gt;&lt;/p&gt;</description></item><item><title>基于Ubuntu进行STM32程序开发</title><link>/embedded/2018-03-06-%E5%9F%BA%E4%BA%8Eubuntu%E8%BF%9B%E8%A1%8Cstm32%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91/</link><pubDate>Tue, 06 Mar 2018 16:01:23 +0800</pubDate><author>yuanye.ma@qq.com (Yuanye Ma)</author><guid>/embedded/2018-03-06-%E5%9F%BA%E4%BA%8Eubuntu%E8%BF%9B%E8%A1%8Cstm32%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91/</guid><description>&lt;h1 id="基于ubuntu进行stm32程序开发"&gt;基于Ubuntu进行STM32程序开发&lt;/h1&gt;
&lt;h2 id="platform-info"&gt;platform info&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Ubuntu version : Ubuntu 20.04.1 LTS&lt;br&gt;
正点原子 STM32f767 阿波罗开发板&lt;br&gt;
st-link version : v1.6.1-201-g4bfaab0&lt;br&gt;
openocd version : 0.10.0&lt;br&gt;
Cross Compiler : gcc-arm-none-eabi (9.2.1 20191025 release)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="install-stlink-driver"&gt;install stlink driver&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-16"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-16"&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install libusb-1.0-0-dev gcc build-essential cmake libusb-1.0-0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/texane/stlink.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;cd&lt;/span&gt; stlink
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make clean
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make release
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make debug
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo cp -a config/udev/rules.d/* /etc/udev/rules.d/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo udevadm control --reload-rules
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo udevadm trigger
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;cd&lt;/span&gt; build/Release/bin/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;echo&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#34;export PATH=\$PATH:`pwd` &amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="test"&gt;test&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-4"&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-5"&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-6"&gt;6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-7"&gt;7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-8"&gt;8&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ st-info --probe
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Found &lt;span style="color:#40a070"&gt;1&lt;/span&gt; stlink programmers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; serial: 323f68064248323848522157
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hla-serial: &lt;span style="color:#4070a0"&gt;&amp;#34;\x32\x3f\x68\x06\x42\x48\x32\x38\x48\x52\x21\x57&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; flash: &lt;span style="color:#40a070"&gt;2097152&lt;/span&gt; &lt;span style="color:#666"&gt;(&lt;/span&gt;pagesize: 2048&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sram: &lt;span style="color:#40a070"&gt;524288&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; chipid: 0x0451
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; descr: F76xxx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="openocd"&gt;openocd&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;#git clone https://github.com/ntfreak/openocd.git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install openocd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="test-1"&gt;test&lt;/h3&gt;
&lt;p&gt;将st-link和开发板相连，并给板子上电。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-16"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-16"&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-17"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-17"&gt;17&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f7x.cfg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Open On-Chip Debugger 0.10.0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Licensed under GNU GPL v2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;For bug reports, &lt;span style="color:#007020"&gt;read&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; http://openocd.org/doc/doxygen/bugs.html
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : auto-selecting first available session transport &lt;span style="color:#4070a0"&gt;&amp;#34;hla_swd&amp;#34;&lt;/span&gt;. To override use &lt;span style="color:#4070a0"&gt;&amp;#39;transport select &amp;lt;transport&amp;gt;&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adapter speed: &lt;span style="color:#40a070"&gt;2000&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adapter_nsrst_delay: &lt;span style="color:#40a070"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;srst_only separate srst_nogate srst_open_drain connect_deassert_srst
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Unable to match requested speed &lt;span style="color:#40a070"&gt;2000&lt;/span&gt; kHz, using &lt;span style="color:#40a070"&gt;1800&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Unable to match requested speed &lt;span style="color:#40a070"&gt;2000&lt;/span&gt; kHz, using &lt;span style="color:#40a070"&gt;1800&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : clock speed &lt;span style="color:#40a070"&gt;1800&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : STLINK v2 JTAG v35 API v2 SWIM v7 VID 0x0483 PID 0x3748
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : using stlink api v2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Target voltage: 3.230647
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : stm32f7x.cpu: hardware has &lt;span style="color:#40a070"&gt;8&lt;/span&gt; breakpoints, &lt;span style="color:#40a070"&gt;4&lt;/span&gt; watchpoints
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="创建工程"&gt;创建工程&lt;/h2&gt;
&lt;p&gt;可以直接使用 &lt;code&gt;stm32CubeMX&lt;/code&gt; 生成 &lt;code&gt;Makefile&lt;/code&gt; 工程 。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;.
├── Core
│   ├── Inc
│   │   ├── gpio.h
│   │   ├── main.h
│   │   ├── stm32f7xx_hal_conf.h
│   │   └── stm32f7xx_it.h
│   └── Src
│   ├── gpio.c
│   ├── main.c
│   ├── stm32f7xx_hal_msp.c
│   ├── stm32f7xx_it.c
│   └── system_stm32f7xx.c
├── Drivers
│   ├── CMSIS
│   │   ├── Device
│   │   └── Include
│   └── STM32F7xx_HAL_Driver
│   ├── Inc
│   └── Src
├── led.ioc
├── Makefile
├── startup_stm32f767xx.s
└── STM32F767IGTx_FLASH.ld
其中 STM32F7xx_HAL_Driver 存储的是HAL的代码，此处不再展开。
CMSIS的内容如下
./Drivers/CMSIS/
├── Device
│   └── ST
│   └── STM32F7xx
│   └── Include
│   ├── stm32f767xx.h
│   ├── stm32f7xx.h
│   └── system_stm32f7xx.h
└── Include
├── cmsis_compiler.h
├── cmsis_gcc.h
├── cmsis_version.h
├── core_cm7.h
└── mpu_armv7.h
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;中最重要的也是和Keil中不一样的地方，就是以下三个部分&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Makefile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;链接器脚本 &lt;code&gt;STM32F767IGTx_FLASH.ld&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;启动文件 &lt;code&gt;startup_stm32f767xx.s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;内容都比较简单，此处不列出来了。&lt;/p&gt;
&lt;h2 id="编译代码"&gt;编译代码&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-5-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-5-4"&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo apt install gcc-arm-none-eabi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ &lt;span style="color:#007020"&gt;cd&lt;/span&gt; led &lt;span style="color:#60a0b0;font-style:italic"&gt;# 进入到工程目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="烧写代码"&gt;烧写代码&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开openocd服务&lt;/p&gt;
&lt;p&gt;打开一个Terminal窗口输入以下命令后回车&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-6-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-6-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f7x.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行过程如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-16"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-16"&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-17"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-17"&gt;17&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-18"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-18"&gt;18&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-19"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-19"&gt;19&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-20"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-20"&gt;20&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-21"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-21"&gt;21&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-22"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-22"&gt;22&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-23"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-23"&gt;23&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-24"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-24"&gt;24&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-25"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-25"&gt;25&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-26"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-26"&gt;26&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-27"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-27"&gt;27&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-28"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-28"&gt;28&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-29"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-29"&gt;29&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-30"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-30"&gt;30&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-31"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-31"&gt;31&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-32"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-32"&gt;32&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-33"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-33"&gt;33&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-34"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-34"&gt;34&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-35"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-35"&gt;35&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-36"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-36"&gt;36&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-37"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-37"&gt;37&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-38"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-38"&gt;38&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-7-39"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-7-39"&gt;39&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f7x.cfg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Open On-Chip Debugger 0.10.0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Licensed under GNU GPL v2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;For bug reports, &lt;span style="color:#007020"&gt;read&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; http://openocd.org/doc/doxygen/bugs.html
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : auto-selecting first available session transport &lt;span style="color:#4070a0"&gt;&amp;#34;hla_swd&amp;#34;&lt;/span&gt;. To override use &lt;span style="color:#4070a0"&gt;&amp;#39;transport select &amp;lt;transport&amp;gt;&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adapter speed: &lt;span style="color:#40a070"&gt;2000&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;adapter_nsrst_delay: &lt;span style="color:#40a070"&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;srst_only separate srst_nogate srst_open_drain connect_deassert_srst
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Unable to match requested speed &lt;span style="color:#40a070"&gt;2000&lt;/span&gt; kHz, using &lt;span style="color:#40a070"&gt;1800&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Unable to match requested speed &lt;span style="color:#40a070"&gt;2000&lt;/span&gt; kHz, using &lt;span style="color:#40a070"&gt;1800&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : clock speed &lt;span style="color:#40a070"&gt;1800&lt;/span&gt; kHz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : STLINK v2 JTAG v35 API v2 SWIM v7 VID 0x0483 PID 0x3748
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : using stlink api v2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Target voltage: 3.239128
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : stm32f7x.cpu: hardware has &lt;span style="color:#40a070"&gt;8&lt;/span&gt; breakpoints, &lt;span style="color:#40a070"&gt;4&lt;/span&gt; watchpoints
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# -------------------------------------- 下边的内容是执行客户端指令时的输出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : accepting &lt;span style="color:#4070a0"&gt;&amp;#39;telnet&amp;#39;&lt;/span&gt; connection on tcp/4444
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to debug-request, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x81000000 pc: 0x08001142 msp: 0x2007ffe8
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to debug-request, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x01000000 pc: 0x0800116c msp: 0x20080000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Programming Started **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;auto erase enabled
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : device &lt;span style="color:#bb60d5"&gt;id&lt;/span&gt; &lt;span style="color:#666"&gt;=&lt;/span&gt; 0x10016451
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : flash &lt;span style="color:#bb60d5"&gt;size&lt;/span&gt; &lt;span style="color:#666"&gt;=&lt;/span&gt; 1024kbytes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : Single Bank &lt;span style="color:#40a070"&gt;1024&lt;/span&gt; kiB STM32F76x/77x found
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to breakpoint, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x61000000 pc: 0x20000046 msp: 0x20080000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wrote &lt;span style="color:#40a070"&gt;32768&lt;/span&gt; bytes from file build/led.bin in 2.035821s &lt;span style="color:#666"&gt;(&lt;/span&gt;15.718 KiB/s&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Programming Finished **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Verify Started **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to breakpoint, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x61000000 pc: 0x2000002e msp: 0x20080000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;verified &lt;span style="color:#40a070"&gt;4612&lt;/span&gt; bytes in 0.716718s &lt;span style="color:#666"&gt;(&lt;/span&gt;6.284 KiB/s&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Verified OK **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;shutdown &lt;span style="color:#007020"&gt;command&lt;/span&gt; invoked
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Info : dropped &lt;span style="color:#4070a0"&gt;&amp;#39;telnet&amp;#39;&lt;/span&gt; connection
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;telnet 到 openocd 服务&lt;/p&gt;
&lt;p&gt;再打开一个Terminal窗口，输入 &lt;code&gt;telnet localhost 4444&lt;/code&gt; , 之后在提示符后输入下边指令&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-8-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-8-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-8-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-8-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-8-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-8-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; halt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; program build/led.bin 0x8000000 verify
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; shutdown
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行过程如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-16"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-16"&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-17"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-17"&gt;17&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-18"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-18"&gt;18&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-19"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-19"&gt;19&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-20"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-20"&gt;20&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-21"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-21"&gt;21&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-22"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-22"&gt;22&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-23"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-23"&gt;23&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-24"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-24"&gt;24&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-25"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-25"&gt;25&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-26"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-26"&gt;26&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-27"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-27"&gt;27&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-9-28"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-9-28"&gt;28&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ telnet localhost &lt;span style="color:#40a070"&gt;4444&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trying 127.0.0.1...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Connected to localhost.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Escape character is &lt;span style="color:#4070a0"&gt;&amp;#39;^]&amp;#39;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Open On-Chip Debugger
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; halt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to debug-request, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x81000000 pc: 0x08001142 msp: 0x2007ffe8
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; program build/led.bin 0x8000000 verify
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to debug-request, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x01000000 pc: 0x0800116c msp: 0x20080000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Programming Started **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;auto erase enabled
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;device &lt;span style="color:#bb60d5"&gt;id&lt;/span&gt; &lt;span style="color:#666"&gt;=&lt;/span&gt; 0x10016451
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;flash &lt;span style="color:#bb60d5"&gt;size&lt;/span&gt; &lt;span style="color:#666"&gt;=&lt;/span&gt; 1024kbytes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Single Bank &lt;span style="color:#40a070"&gt;1024&lt;/span&gt; kiB STM32F76x/77x found
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to breakpoint, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x61000000 pc: 0x20000046 msp: 0x20080000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wrote &lt;span style="color:#40a070"&gt;32768&lt;/span&gt; bytes from file build/led.bin in 2.035821s &lt;span style="color:#666"&gt;(&lt;/span&gt;15.718 KiB/s&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Programming Finished **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Verify Started **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to breakpoint, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x61000000 pc: 0x2000002e msp: 0x20080000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;verified &lt;span style="color:#40a070"&gt;4612&lt;/span&gt; bytes in 0.716718s &lt;span style="color:#666"&gt;(&lt;/span&gt;6.284 KiB/s&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;** Verified OK **
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; shutdown
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;shutdown &lt;span style="color:#007020"&gt;command&lt;/span&gt; invoked
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Connection closed by foreign host.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;按开发板上的 &lt;code&gt;RESET&lt;/code&gt; 键后代码自动运行&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;以上3个步骤可以简写为一个步骤&lt;br&gt;
openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg \&lt;br&gt;
-f /usr/share/openocd/scripts/target/stm32f7x.cfg \&lt;br&gt;
-c &amp;ldquo;program build/led.bin 0x8000000 verify&amp;rdquo; \&lt;br&gt;
-c &amp;ldquo;shutdown&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="openocd-烧写程序的命令格式"&gt;openocd 烧写程序的命令格式&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-10-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-10-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;program &amp;lt;filename&amp;gt; &lt;span style="color:#666"&gt;[&lt;/span&gt;preverify&lt;span style="color:#666"&gt;]&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt;verify&lt;span style="color:#666"&gt;]&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt;reset&lt;span style="color:#666"&gt;]&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt;exit&lt;span style="color:#666"&gt;]&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt;offset&lt;span style="color:#666"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="gdb-调试代码"&gt;gdb 调试代码&lt;/h2&gt;
&lt;p&gt;由于 Ubuntu 20.04 不能通过&lt;code&gt;apt install&lt;/code&gt; 的方式安装 &lt;code&gt;gdb-arm-none-eabi&lt;/code&gt; , 具体安装方式可以参照&lt;a href="https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa"&gt;这个链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;arm-none-eabi-gdb&lt;/code&gt;的使用方式可以参照&lt;a href="https://news.eeworld.com.cn"&gt;这篇文章&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="安装"&gt;安装&lt;/h3&gt;
&lt;p&gt;按照&lt;a href="https://askubuntu.com/questions/1243252/how-to-install-arm-none-eabi-gdb-on-ubuntu-20-04-lts-focal-fossa"&gt;这个链接&lt;/a&gt;下载安装后。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-11-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-11-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ arm-none-eabi-gdb ./build/led.elf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;arm-none-eabi-gdb: error &lt;span style="color:#007020;font-weight:bold"&gt;while&lt;/span&gt; loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo apt install libncurses5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="启动-openocd"&gt;启动 openocd&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-12-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-12-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-12-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-12-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -f /usr/share/openocd/scripts/target/stm32f7x.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="启动-arm-none-eabi-gdb"&gt;启动 arm-none-eabi-gdb&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;div style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-16"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-16"&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-17"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-17"&gt;17&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-18"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-18"&gt;18&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-19"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-19"&gt;19&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-20"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-20"&gt;20&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-21"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-21"&gt;21&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-22"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-22"&gt;22&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-23"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-23"&gt;23&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-24"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-24"&gt;24&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-25"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-25"&gt;25&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-26"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-26"&gt;26&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-27"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-27"&gt;27&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-28"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-28"&gt;28&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-29"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-29"&gt;29&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-30"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-30"&gt;30&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-31"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-31"&gt;31&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-32"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-32"&gt;32&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-33"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-33"&gt;33&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-34"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-34"&gt;34&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-35"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-35"&gt;35&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-36"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-36"&gt;36&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-37"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-37"&gt;37&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-38"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-38"&gt;38&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-39"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-39"&gt;39&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-40"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-40"&gt;40&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-41"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-41"&gt;41&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-42"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-42"&gt;42&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-43"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-43"&gt;43&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-44"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-44"&gt;44&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-45"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-45"&gt;45&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-46"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-46"&gt;46&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-47"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-47"&gt;47&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-48"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-48"&gt;48&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-49"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-49"&gt;49&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-50"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-50"&gt;50&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-51"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-51"&gt;51&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-52"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-52"&gt;52&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-53"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-53"&gt;53&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-54"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-54"&gt;54&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-55"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-55"&gt;55&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-56"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-56"&gt;56&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-57"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-57"&gt;57&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-58"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-58"&gt;58&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-59"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-59"&gt;59&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-60"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-60"&gt;60&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-61"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-61"&gt;61&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-62"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-62"&gt;62&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-63"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-63"&gt;63&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-64"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-64"&gt;64&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-65"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-65"&gt;65&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-66"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-66"&gt;66&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-67"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-67"&gt;67&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-68"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-68"&gt;68&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-69"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-69"&gt;69&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-70"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-70"&gt;70&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-71"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-71"&gt;71&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-72"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-72"&gt;72&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-73"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-73"&gt;73&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-74"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-74"&gt;74&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-75"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-75"&gt;75&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-76"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-76"&gt;76&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-77"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-77"&gt;77&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-78"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-78"&gt;78&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-79"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-79"&gt;79&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-80"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-80"&gt;80&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-81"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-81"&gt;81&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-82"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-82"&gt;82&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-83"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-83"&gt;83&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-84"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-84"&gt;84&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-85"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-85"&gt;85&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-86"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-86"&gt;86&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-87"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-87"&gt;87&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-88"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-88"&gt;88&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-89"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-89"&gt;89&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-90"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-90"&gt;90&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-91"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-91"&gt;91&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-92"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-92"&gt;92&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-93"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-93"&gt;93&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-94"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-94"&gt;94&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-95"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-95"&gt;95&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-96"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-96"&gt;96&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-97"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-97"&gt;97&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-98"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-98"&gt;98&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-13-99"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-13-99"&gt;99&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ arm-none-eabi-gdb ./build/led.elf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;GNU gdb &lt;span style="color:#666"&gt;(&lt;/span&gt;GNU Arm Embedded Toolchain 10-2020-q4-major&lt;span style="color:#666"&gt;)&lt;/span&gt; 10.1.90.20201028-git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Copyright &lt;span style="color:#666"&gt;(&lt;/span&gt;C&lt;span style="color:#666"&gt;)&lt;/span&gt; &lt;span style="color:#40a070"&gt;2020&lt;/span&gt; Free Software Foundation, Inc.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;License GPLv3+: GNU GPL version &lt;span style="color:#40a070"&gt;3&lt;/span&gt; or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This is free software: you are free to change and redistribute it.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;There is NO WARRANTY, to the extent permitted by law.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type &lt;span style="color:#4070a0"&gt;&amp;#34;show copying&amp;#34;&lt;/span&gt; and &lt;span style="color:#4070a0"&gt;&amp;#34;show warranty&amp;#34;&lt;/span&gt; &lt;span style="color:#007020;font-weight:bold"&gt;for&lt;/span&gt; details.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This GDB was configured as &lt;span style="color:#4070a0"&gt;&amp;#34;--host=x86_64-linux-gnu --target=arm-none-eabi&amp;#34;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type &lt;span style="color:#4070a0"&gt;&amp;#34;show configuration&amp;#34;&lt;/span&gt; &lt;span style="color:#007020;font-weight:bold"&gt;for&lt;/span&gt; configuration details.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;For bug reporting instructions, please see:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;https://www.gnu.org/software/gdb/bugs/&amp;gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Find the GDB manual and other documentation resources online at:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;http://www.gnu.org/software/gdb/documentation/&amp;gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;For help, &lt;span style="color:#007020"&gt;type&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#34;help&amp;#34;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type &lt;span style="color:#4070a0"&gt;&amp;#34;apropos word&amp;#34;&lt;/span&gt; to search &lt;span style="color:#007020;font-weight:bold"&gt;for&lt;/span&gt; commands related to &lt;span style="color:#4070a0"&gt;&amp;#34;word&amp;#34;&lt;/span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Reading symbols from ./build/led.elf...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; target remote localhost:3333 &lt;span style="color:#60a0b0;font-style:italic"&gt;# 链接openocd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Remote debugging using localhost:3333
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;0x00000000 in ?? &lt;span style="color:#666"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; monitor reset &lt;span style="color:#60a0b0;font-style:italic"&gt;# reset板子&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; monitor halt &lt;span style="color:#60a0b0;font-style:italic"&gt;# 挂起CPU &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;target halted due to debug-request, current mode: Thread
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xPSR: 0x21000000 pc: 0x080005c6 msp: 0x2007fff8
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; load &lt;span style="color:#60a0b0;font-style:italic"&gt;# 加载程序文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .isr_vector, size 0x1f8 lma 0x8000000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .text, size 0xed4 lma 0x80001f8
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .rodata, size 0x10 lma 0x80010cc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .ARM, size 0x8 lma 0x80010dc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .init_array, size 0x4 lma 0x80010e4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .fini_array, size 0x4 lma 0x80010e8
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Loading section .data, size 0xc lma 0x80010ec
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Start address 0x08001008, load size &lt;span style="color:#40a070"&gt;4344&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Transfer rate: &lt;span style="color:#40a070"&gt;1&lt;/span&gt; KB/sec, &lt;span style="color:#40a070"&gt;620&lt;/span&gt; bytes/write.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; list &lt;span style="color:#60a0b0;font-style:italic"&gt;# 查看代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;59
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;60 /**
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;61 * @brief The application entry point.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;62 * @retval int
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;63 */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;64 int main&lt;span style="color:#666"&gt;(&lt;/span&gt;void&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;65 &lt;span style="color:#666"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;66 /* USER CODE BEGIN &lt;span style="color:#40a070"&gt;1&lt;/span&gt; */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;67
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;68 /* USER CODE END &lt;span style="color:#40a070"&gt;1&lt;/span&gt; */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; b main &lt;span style="color:#60a0b0;font-style:italic"&gt;# 设置断点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Breakpoint &lt;span style="color:#40a070"&gt;1&lt;/span&gt; at 0x80005ba: file Core/Src/main.c, line 73.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Note: automatically using hardware breakpoints &lt;span style="color:#007020;font-weight:bold"&gt;for&lt;/span&gt; read-only addresses.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; info &lt;span style="color:#007020"&gt;break&lt;/span&gt; &lt;span style="color:#60a0b0;font-style:italic"&gt;# 查看断点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Num Type Disp Enb Address What
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#40a070"&gt;1&lt;/span&gt; breakpoint keep y 0x080005ba in main at Core/Src/main.c:73
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;65 movs r1, &lt;span style="color:#60a0b0;font-style:italic"&gt;#0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; c
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Continuing.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Breakpoint 1, main &lt;span style="color:#666"&gt;()&lt;/span&gt; at Core/Src/main.c:73
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;73 HAL_Init&lt;span style="color:#666"&gt;()&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; p
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The &lt;span style="color:#007020"&gt;history&lt;/span&gt; is empty.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; bt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;#0 main () at Core/Src/main.c:73&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HAL_Init &lt;span style="color:#666"&gt;()&lt;/span&gt; at Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c:151
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;151 HAL_NVIC_SetPriorityGrouping&lt;span style="color:#666"&gt;(&lt;/span&gt;NVIC_PRIORITYGROUP_4&lt;span style="color:#666"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;146 &lt;span style="color:#60a0b0;font-style:italic"&gt;#if (PREFETCH_ENABLE != 0U)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;147 __HAL_FLASH_PREFETCH_BUFFER_ENABLE&lt;span style="color:#666"&gt;()&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;148 &lt;span style="color:#60a0b0;font-style:italic"&gt;#endif /* PREFETCH_ENABLE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;149
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;150 /* Set Interrupt Group Priority */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;151 HAL_NVIC_SetPriorityGrouping&lt;span style="color:#666"&gt;(&lt;/span&gt;NVIC_PRIORITYGROUP_4&lt;span style="color:#666"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;152
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;153 /* Use systick as &lt;span style="color:#007020"&gt;time&lt;/span&gt; base &lt;span style="color:#007020"&gt;source&lt;/span&gt; and configure 1ms tick &lt;span style="color:#666"&gt;(&lt;/span&gt;default clock after Reset is HSI&lt;span style="color:#666"&gt;)&lt;/span&gt; */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;154 HAL_InitTick&lt;span style="color:#666"&gt;(&lt;/span&gt;TICK_INT_PRIORITY&lt;span style="color:#666"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;155
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; f
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;#0 HAL_Init () at Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c:151&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;151 HAL_NVIC_SetPriorityGrouping&lt;span style="color:#666"&gt;(&lt;/span&gt;NVIC_PRIORITYGROUP_4&lt;span style="color:#666"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;146 &lt;span style="color:#60a0b0;font-style:italic"&gt;#if (PREFETCH_ENABLE != 0U)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;147 __HAL_FLASH_PREFETCH_BUFFER_ENABLE&lt;span style="color:#666"&gt;()&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;148 &lt;span style="color:#60a0b0;font-style:italic"&gt;#endif /* PREFETCH_ENABLE */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;149
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;150 /* Set Interrupt Group Priority */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;151 HAL_NVIC_SetPriorityGrouping&lt;span style="color:#666"&gt;(&lt;/span&gt;NVIC_PRIORITYGROUP_4&lt;span style="color:#666"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;152
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;153 /* Use systick as &lt;span style="color:#007020"&gt;time&lt;/span&gt; base &lt;span style="color:#007020"&gt;source&lt;/span&gt; and configure 1ms tick &lt;span style="color:#666"&gt;(&lt;/span&gt;default clock after Reset is HSI&lt;span style="color:#666"&gt;)&lt;/span&gt; */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;154 HAL_InitTick&lt;span style="color:#666"&gt;(&lt;/span&gt;TICK_INT_PRIORITY&lt;span style="color:#666"&gt;)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;155
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;gdb&lt;span style="color:#666"&gt;)&lt;/span&gt; quit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A debugging session is active.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Inferior &lt;span style="color:#40a070"&gt;1&lt;/span&gt; &lt;span style="color:#666"&gt;[&lt;/span&gt;Remote target&lt;span style="color:#666"&gt;]&lt;/span&gt; will be detached.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Quit anyway? &lt;span style="color:#666"&gt;(&lt;/span&gt;y or n&lt;span style="color:#666"&gt;)&lt;/span&gt; y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Detaching from program: /home/myye/stm32f767_led/led/build/led.elf, Remote target
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ending remote debugging.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;[&lt;/span&gt;Inferior &lt;span style="color:#40a070"&gt;1&lt;/span&gt; &lt;span style="color:#666"&gt;(&lt;/span&gt;Remote target&lt;span style="color:#666"&gt;)&lt;/span&gt; detached&lt;span style="color:#666"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="gdb-常用的命令"&gt;GDB 常用的命令&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;作用/举例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;list&lt;/td&gt;
&lt;td&gt;列出附近代码&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;break main (b 16)&lt;/td&gt;
&lt;td&gt;在符号main处设置断点（在第16行设置断点）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;break info&lt;/td&gt;
&lt;td&gt;查看断点&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;delet break [n]&lt;/td&gt;
&lt;td&gt;删除编号为n的断点，不加n的话删除所有断点&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;step&lt;/td&gt;
&lt;td&gt;进入子函数单步运行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;next&lt;/td&gt;
&lt;td&gt;跳过子函数单步运行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;until&lt;/td&gt;
&lt;td&gt;u 16 运行到16行停下&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;continue&lt;/td&gt;
&lt;td&gt;运行代码到断点处停下&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;print&lt;/td&gt;
&lt;td&gt;print a 显示变量a的值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;display&lt;/td&gt;
&lt;td&gt;display tmp 跟踪tmp，在每次停下时会自动显示变量的数值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bt&lt;/td&gt;
&lt;td&gt;查看栈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quit&lt;/td&gt;
&lt;td&gt;退出调试&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;以上命令还需要在实践中进一步熟悉。&lt;/p&gt;</description></item></channel></rss>