<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GD32 on Hoshitori's Blog</title><link>https://blog.ctree.site/categories/gd32/</link><description>Recent content in GD32 on Hoshitori's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 24 Apr 2026 17:56:05 +0800</lastBuildDate><atom:link href="https://blog.ctree.site/categories/gd32/index.xml" rel="self" type="application/rss+xml"/><item><title>GD32VW553立创开发板折腾日志1</title><link>https://blog.ctree.site/p/gd32vw553-dev/</link><pubDate>Fri, 24 Apr 2026 17:56:05 +0800</pubDate><guid>https://blog.ctree.site/p/gd32vw553-dev/</guid><description>&lt;p&gt;最近入手了一块GD32VW553的开发板，到手价9.9。
号称是有板载的2.4Ghz WiFi6 + BLE5.2支持，感觉买一个来玩玩很划算（？）&lt;/p&gt;
&lt;h2 id="购买方式"&gt;购买方式
&lt;/h2&gt;&lt;p&gt;首先去&lt;a class="link" href="https://lckfb.com/activities/lckfb-gd32vw553-hmq6/xian-shi-you-hui" target="_blank" rel="noopener"
&gt;这里&lt;/a&gt;领取开发板优惠券，要求是发送到朋友圈并集5个赞。然后再去&lt;a class="link" href="https://www.szlcsc.com/huodong.html" target="_blank" rel="noopener"
&gt;这里&lt;/a&gt;领取免邮券就可以9.9到手了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260424180212.png"
width="280"
height="257"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260424180212_hu_751293f03389924.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260424180212_hu_65ad556cf54b2380.png 1024w"
loading="lazy"
alt="购买凭证"
class="gallery-image"
data-flex-grow="108"
data-flex-basis="261px"
&gt;&lt;/p&gt;
&lt;h2 id="到手开箱"&gt;到手开箱
&lt;/h2&gt;&lt;p&gt;除了开发板本体以外，还额外赠送了两个排针（x）除此以外居然是彩色丝印，给好评。
（图片占位）&lt;/p&gt;
&lt;p&gt;东西很小巧，但是对一个买来当玩具的人（我）来说肯定够用了。&lt;/p&gt;
&lt;p&gt;扫描随板附送的说明书二维码，可以看到板子的&lt;a class="link" href="https://wiki.lckfb.com/zh-hans/gd32vw553/" target="_blank" rel="noopener"
&gt;官方文档&lt;/a&gt;。扫了一眼感觉还是不错的，适合慢慢从头学起。&lt;del&gt;但是我是一个很没有耐心的人&lt;/del&gt;，所以看了一点就开始自己折腾了！以下是一些折腾的成果，附带一些官方教程里没有的东西。&lt;/p&gt;
&lt;h2 id="新建工程"&gt;新建工程
&lt;/h2&gt;&lt;h3 id="新建工程官方ide"&gt;新建工程(官方IDE)
&lt;/h3&gt;&lt;p&gt;点击左上角&lt;code&gt;File -&amp;gt; New -&amp;gt; C/C++ Project&lt;/code&gt;新建项目。不要点首页的&lt;code&gt;Create GD Project&lt;/code&gt;!!!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260424181623.png"
width="772"
height="576"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260424181623_hu_9a5f18d2e3053d2.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260424181623_hu_40b48d40691c146f.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="321px"
&gt;&lt;/p&gt;
&lt;p&gt;然后选择C/C++ Managed Build，选择&lt;code&gt;Project Type: GigaDevice RISC-V Project&lt;/code&gt;。输入项目名，在下一页中找到&lt;code&gt;GD32VW553HMQ6&lt;/code&gt;就完成了。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260424183514.png"
width="621"
height="302"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260424183514_hu_55813ab7318285f.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260424183514_hu_54e88cd0398dceac.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="205"
data-flex-basis="493px"
&gt;
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260424183646.png"
width="629"
height="485"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260424183646_hu_2f9fa1a2f290b6a.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260424183646_hu_3cbdaa7ce4b500f1.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
&gt;&lt;/p&gt;
&lt;p&gt;创建完成之后并不会自动打开项目，需要手动关闭Welcome选项卡。&lt;/p&gt;
&lt;h3 id="新建工程vscode"&gt;新建工程(VSCode)
&lt;/h3&gt;&lt;h4 id="从头移植"&gt;从头移植
&lt;/h4&gt;&lt;p&gt;在扩展中搜索&lt;code&gt;Embedded IDE&lt;/code&gt;并安装，随后新建项目&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429131642.png"
width="608"
height="231"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429131642_hu_5b361a8a1099e806.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429131642_hu_2c3c77b444172620.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="263"
data-flex-basis="631px"
&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429131701.png"
width="604"
height="270"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429131701_hu_b5e5deeb7b716c8.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429131701_hu_e45d9d396c21c2f0.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="223"
data-flex-basis="536px"
&gt;&lt;/p&gt;
&lt;p&gt;到&lt;a class="link" href="https://www.gd32mcu.com/cn/download/7?kw=GD32VW5" target="_blank" rel="noopener"
&gt;GigaDevice资料下载&lt;/a&gt;处获取最新的&lt;code&gt;GD32VW55x Firmware Library&lt;/code&gt;，解压。&lt;/p&gt;
&lt;p&gt;将&lt;code&gt;Firmware&lt;/code&gt;, &lt;code&gt;Template&lt;/code&gt;和&lt;code&gt;Utilities&lt;/code&gt;复制到项目下，删除&lt;code&gt;Template&lt;/code&gt;下的&lt;code&gt;xxx_project&lt;/code&gt;文件夹和&lt;code&gt;Firmware\RISCV&lt;/code&gt;下的&lt;code&gt;env_IAR&lt;/code&gt;, &lt;code&gt;env_SES&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;新建src文件夹，将&lt;code&gt;Template&lt;/code&gt;里的&lt;code&gt;main.c&lt;/code&gt;和&lt;code&gt;main.h&lt;/code&gt;移动到&lt;code&gt;src&lt;/code&gt;内&lt;/p&gt;
&lt;p&gt;右键项目资源，点击添加源文件夹，点击普通文件夹，将&lt;code&gt;Firmware&lt;/code&gt;, &lt;code&gt;Template&lt;/code&gt;, &lt;code&gt;Utilities&lt;/code&gt;, &lt;code&gt;src&lt;/code&gt;添加到项目&lt;/p&gt;
&lt;p&gt;点击构建配置，将链接脚本路径设置为&lt;code&gt;Firmware\RISCV\env_Eclipse\GD32VW553xM.lds&lt;/code&gt;，点击构建器选项右边的编辑按钮，在新打开的页面中选择链接器选项卡，在“不生成指定的二进制文件”中删除&lt;code&gt;*.bin file&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429134404.png"
width="689"
height="125"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429134404_hu_7fe3047e3effe14.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429134404_hu_7592441cbc8a36e8.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="551"
data-flex-basis="1322px"
&gt;&lt;/p&gt;
&lt;p&gt;在页面中选择全局选项，在编译器附加选项后面加入&lt;code&gt;-msmall-data-limit=8 -mdiv&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429134751.png"
width="1253"
height="577"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429134751_hu_3c731787d7148484.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429134751_hu_ac0d9ff2e0ae4fd5.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="217"
data-flex-basis="521px"
&gt;&lt;/p&gt;
&lt;p&gt;点击C/C++属性，在包含目录中添加&lt;code&gt;Firmware/GD32VW55x_standard_peripheral&lt;/code&gt;, &lt;code&gt;Firmware/GD32VW55x_standard_peripheral/Include&lt;/code&gt;, &lt;code&gt;Template&lt;/code&gt;, &lt;code&gt;Utilities&lt;/code&gt;, &lt;code&gt;src&lt;/code&gt;, &lt;code&gt;Firmware/RISCV/stubs&lt;/code&gt;, &lt;code&gt;Firmware/RISCV/drivers&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在预处理器定义中添加&lt;code&gt;USE_STDPERIPH_DRIVER&lt;/code&gt;, &lt;code&gt;HXTAL_VALUE=40000000U&lt;/code&gt;&lt;/p&gt;
&lt;h4 id="使用模板"&gt;使用模板
&lt;/h4&gt;&lt;p&gt;EIDE其实是有GD32VW553的模板的，只需要进行如下操作就可以直接启动了。
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429141925.png"
width="602"
height="223"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429141925_hu_c2197ad371e8e3a0.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429141925_hu_63c1f16e1a3c58cb.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="269"
data-flex-basis="647px"
&gt;
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429141957.png"
width="604"
height="180"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429141957_hu_de3cb2a16a9bb0ca.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429141957_hu_900a86cbc72a7bf9.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="335"
data-flex-basis="805px"
&gt;
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429142019.png"
width="603"
height="362"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429142019_hu_7346c2cbdbe258b9.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429142019_hu_b4eeb2c165e11bd9.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="166"
data-flex-basis="399px"
&gt;
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429142041.png"
width="603"
height="115"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429142041_hu_3397eb7595c35e6d.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429142041_hu_8362dcfe5983778b.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="524"
data-flex-basis="1258px"
&gt;
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429142101.png"
width="603"
height="114"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429142101_hu_ce6caa1f100caca7.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429142101_hu_ee560ee8ca93d29c.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="528"
data-flex-basis="1269px"
&gt;&lt;/p&gt;
&lt;h3 id="新建工程clion"&gt;新建工程(CLion)
&lt;/h3&gt;&lt;p&gt;要在Clion环境下编译，我们需要先安装对应的工具链。本文使用的是&lt;a class="link" href="https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/tag/v15.2.0-1" target="_blank" rel="noopener"
&gt;xPack GNU RISC-V Embedded GCC v15.2.0-1&lt;/a&gt;，下载win32-x64的包后解压加入环境变量，重启CLion。&lt;/p&gt;
&lt;p&gt;新建C可执行文件项目&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429200739.png"
width="802"
height="651"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429200739_hu_36f173ddb5f8700b.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429200739_hu_fb652b927934d5dd.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="123"
data-flex-basis="295px"
&gt;&lt;/p&gt;
&lt;p&gt;到&lt;a class="link" href="https://www.gd32mcu.com/cn/download/7?kw=GD32VW5" target="_blank" rel="noopener"
&gt;GigaDevice资料下载&lt;/a&gt;处获取最新的&lt;code&gt;GD32VW55x Firmware Library&lt;/code&gt;，解压。
将&lt;code&gt;Firmware&lt;/code&gt;, &lt;code&gt;Template&lt;/code&gt;和&lt;code&gt;Utilities&lt;/code&gt;复制到项目下，删除&lt;code&gt;Template&lt;/code&gt;下的&lt;code&gt;xxx_project&lt;/code&gt;文件夹和&lt;code&gt;Firmware\RISCV&lt;/code&gt;下的&lt;code&gt;env_IAR&lt;/code&gt;, &lt;code&gt;env_SES&lt;/code&gt;文件夹。随后在项目根目录下新建&lt;code&gt;src&lt;/code&gt;文件夹，将&lt;code&gt;Template&lt;/code&gt;里的&lt;code&gt;main.c&lt;/code&gt;和&lt;code&gt;main.h&lt;/code&gt;移动到&lt;code&gt;src&lt;/code&gt;内。&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;CMakeLists.txt&lt;/code&gt;，将内容更改为&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma" id="chroma-0"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="code-0-1"&gt; 1
&lt;/span&gt;&lt;span class="lnt" id="code-0-2"&gt; 2
&lt;/span&gt;&lt;span class="lnt" id="code-0-3"&gt; 3
&lt;/span&gt;&lt;span class="lnt" id="code-0-4"&gt; 4
&lt;/span&gt;&lt;span class="lnt" id="code-0-5"&gt; 5
&lt;/span&gt;&lt;span class="lnt" id="code-0-6"&gt; 6
&lt;/span&gt;&lt;span class="lnt" id="code-0-7"&gt; 7
&lt;/span&gt;&lt;span class="lnt" id="code-0-8"&gt; 8
&lt;/span&gt;&lt;span class="lnt" id="code-0-9"&gt; 9
&lt;/span&gt;&lt;span class="lnt" id="code-0-10"&gt;10
&lt;/span&gt;&lt;span class="lnt" id="code-0-11"&gt;11
&lt;/span&gt;&lt;span class="lnt" id="code-0-12"&gt;12
&lt;/span&gt;&lt;span class="lnt" id="code-0-13"&gt;13
&lt;/span&gt;&lt;span class="lnt" id="code-0-14"&gt;14
&lt;/span&gt;&lt;span class="lnt" id="code-0-15"&gt;15
&lt;/span&gt;&lt;span class="lnt" id="code-0-16"&gt;16
&lt;/span&gt;&lt;span class="lnt" id="code-0-17"&gt;17
&lt;/span&gt;&lt;span class="lnt" id="code-0-18"&gt;18
&lt;/span&gt;&lt;span class="lnt" id="code-0-19"&gt;19
&lt;/span&gt;&lt;span class="lnt" id="code-0-20"&gt;20
&lt;/span&gt;&lt;span class="lnt" id="code-0-21"&gt;21
&lt;/span&gt;&lt;span class="lnt" id="code-0-22"&gt;22
&lt;/span&gt;&lt;span class="lnt" id="code-0-23"&gt;23
&lt;/span&gt;&lt;span class="lnt" id="code-0-24"&gt;24
&lt;/span&gt;&lt;span class="lnt" id="code-0-25"&gt;25
&lt;/span&gt;&lt;span class="lnt" id="code-0-26"&gt;26
&lt;/span&gt;&lt;span class="lnt" id="code-0-27"&gt;27
&lt;/span&gt;&lt;span class="lnt" id="code-0-28"&gt;28
&lt;/span&gt;&lt;span class="lnt" id="code-0-29"&gt;29
&lt;/span&gt;&lt;span class="lnt" id="code-0-30"&gt;30
&lt;/span&gt;&lt;span class="lnt" id="code-0-31"&gt;31
&lt;/span&gt;&lt;span class="lnt" id="code-0-32"&gt;32
&lt;/span&gt;&lt;span class="lnt" id="code-0-33"&gt;33
&lt;/span&gt;&lt;span class="lnt" id="code-0-34"&gt;34
&lt;/span&gt;&lt;span class="lnt" id="code-0-35"&gt;35
&lt;/span&gt;&lt;span class="lnt" id="code-0-36"&gt;36
&lt;/span&gt;&lt;span class="lnt" id="code-0-37"&gt;37
&lt;/span&gt;&lt;span class="lnt" id="code-0-38"&gt;38
&lt;/span&gt;&lt;span class="lnt" id="code-0-39"&gt;39
&lt;/span&gt;&lt;span class="lnt" id="code-0-40"&gt;40
&lt;/span&gt;&lt;span class="lnt" id="code-0-41"&gt;41
&lt;/span&gt;&lt;span class="lnt" id="code-0-42"&gt;42
&lt;/span&gt;&lt;span class="lnt" id="code-0-43"&gt;43
&lt;/span&gt;&lt;span class="lnt" id="code-0-44"&gt;44
&lt;/span&gt;&lt;span class="lnt" id="code-0-45"&gt;45
&lt;/span&gt;&lt;span class="lnt" id="code-0-46"&gt;46
&lt;/span&gt;&lt;span class="lnt" id="code-0-47"&gt;47
&lt;/span&gt;&lt;span class="lnt" id="code-0-48"&gt;48
&lt;/span&gt;&lt;span class="lnt" id="code-0-49"&gt;49
&lt;/span&gt;&lt;span class="lnt" id="code-0-50"&gt;50
&lt;/span&gt;&lt;span class="lnt" id="code-0-51"&gt;51
&lt;/span&gt;&lt;span class="lnt" id="code-0-52"&gt;52
&lt;/span&gt;&lt;span class="lnt" id="code-0-53"&gt;53
&lt;/span&gt;&lt;span class="lnt" id="code-0-54"&gt;54
&lt;/span&gt;&lt;span class="lnt" id="code-0-55"&gt;55
&lt;/span&gt;&lt;span class="lnt" id="code-0-56"&gt;56
&lt;/span&gt;&lt;span class="lnt" id="code-0-57"&gt;57
&lt;/span&gt;&lt;span class="lnt" id="code-0-58"&gt;58
&lt;/span&gt;&lt;span class="lnt" id="code-0-59"&gt;59
&lt;/span&gt;&lt;span class="lnt" id="code-0-60"&gt;60
&lt;/span&gt;&lt;span class="lnt" id="code-0-61"&gt;61
&lt;/span&gt;&lt;span class="lnt" id="code-0-62"&gt;62
&lt;/span&gt;&lt;span class="lnt" id="code-0-63"&gt;63
&lt;/span&gt;&lt;span class="lnt" id="code-0-64"&gt;64
&lt;/span&gt;&lt;span class="lnt" id="code-0-65"&gt;65
&lt;/span&gt;&lt;span class="lnt" id="code-0-66"&gt;66
&lt;/span&gt;&lt;span class="lnt" id="code-0-67"&gt;67
&lt;/span&gt;&lt;span class="lnt" id="code-0-68"&gt;68
&lt;/span&gt;&lt;span class="lnt" id="code-0-69"&gt;69
&lt;/span&gt;&lt;span class="lnt" id="code-0-70"&gt;70
&lt;/span&gt;&lt;span class="lnt" id="code-0-71"&gt;71
&lt;/span&gt;&lt;span class="lnt" id="code-0-72"&gt;72
&lt;/span&gt;&lt;span class="lnt" id="code-0-73"&gt;73
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CMake" data-lang="CMake"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cmake_minimum_required&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;VERSION&lt;/span&gt; &lt;span class="s"&gt;3.16&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_SYSTEM_NAME&lt;/span&gt; &lt;span class="s"&gt;Generic&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_SYSTEM_PROCESSOR&lt;/span&gt; &lt;span class="s"&gt;riscv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_TRY_COMPILE_TARGET_TYPE&lt;/span&gt; &lt;span class="s"&gt;STATIC_LIBRARY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_EXECUTABLE_SUFFIX&lt;/span&gt; &lt;span class="s"&gt;.elf&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;project&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;gd32vw553&lt;/span&gt; &lt;span class="s"&gt;C&lt;/span&gt; &lt;span class="s"&gt;ASM&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;TOOLCHAIN_PREFIX&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;riscv-none-elf-&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_C_COMPILER&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;gcc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_CXX_COMPILER&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;g++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_ASM_COMPILER&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;gcc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_OBJCOPY&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;objcopy&lt;/span&gt; &lt;span class="s"&gt;CACHE&lt;/span&gt; &lt;span class="s"&gt;INTERNAL&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;objcopy tool&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_OBJDUMP&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;objdump&lt;/span&gt; &lt;span class="s"&gt;CACHE&lt;/span&gt; &lt;span class="s"&gt;INTERNAL&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;objdump tool&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_SIZE&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;size&lt;/span&gt; &lt;span class="s"&gt;CACHE&lt;/span&gt; &lt;span class="s"&gt;INTERNAL&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;size tool&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_AR&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;TOOLCHAIN_PREFIX&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;ar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;ARCH_FLAGS&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-march=rv32imac_zicsr -mabi=ilp32 -mcmodel=medlow -msmall-data-limit=8 -mdiv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_C_FLAGS&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${ARCH_FLAGS} -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -std=gnu11&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_ASM_FLAGS&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${ARCH_FLAGS} -x assembler-with-cpp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;LDSCRIPT&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${CMAKE_SOURCE_DIR}/Firmware/RISCV/env_Eclipse/GD32VW553xM.lds&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_EXE_LINKER_FLAGS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${ARCH_FLAGS} -T${LDSCRIPT} -Wl,--cref -Wl,--gc-sections \ --specs=nosys.specs --specs=nano.specs -nostartfiles -Wl,-Bstatic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_BUILD_TYPE&lt;/span&gt; &lt;span class="s"&gt;STREQUAL&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Debug&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_C_FLAGS&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${CMAKE_C_FLAGS} -g -gdwarf-2 -O0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;else&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;CMAKE_C_FLAGS&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;${CMAKE_C_FLAGS} -O2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;endif&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;add_definitions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;-DUSE_STDPERIPH_DRIVER&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;-DHXTAL_VALUE=40000000U&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;include_directories&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/src&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/Template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/Utilities&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/Firmware/GD32VW55x_standard_peripheral/Include&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/Firmware/GD32VW55x_standard_peripheral&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/Firmware/RISCV/drivers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;FIRMWARE_DIR&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SOURCE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/Firmware&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;GLOB_RECURSE&lt;/span&gt; &lt;span class="s"&gt;C_SOURCES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${FIRMWARE_DIR}/GD32VW55x_standard_peripheral/Source/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${FIRMWARE_DIR}/GD32VW55x_standard_peripheral/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${FIRMWARE_DIR}/RISCV/env_Eclipse/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${FIRMWARE_DIR}/RISCV/stubs/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${FIRMWARE_DIR}/RISCV/drivers/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${CMAKE_SOURCE_DIR}/Template/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${CMAKE_SOURCE_DIR}/Utilities/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;${CMAKE_SOURCE_DIR}/src/*.c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;ASM_SOURCES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;FIRMWARE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/RISCV/env_Eclipse/start.S&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;FIRMWARE_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/RISCV/env_Eclipse/entry.S&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;add_executable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;C_SOURCES&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ASM_SOURCES&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;add_custom_command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;TARGET&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="s"&gt;POST_BUILD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMAND&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_OBJCOPY&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="s"&gt;-O&lt;/span&gt; &lt;span class="s"&gt;ihex&lt;/span&gt; &lt;span class="o"&gt;$&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;TARGET_FILE:${PROJECT_NAME}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.hex&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMAND&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_OBJCOPY&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="s"&gt;-O&lt;/span&gt; &lt;span class="s"&gt;binary&lt;/span&gt; &lt;span class="s"&gt;-S&lt;/span&gt; &lt;span class="o"&gt;$&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;TARGET_FILE:${PROJECT_NAME}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.bin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMAND&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_OBJDUMP&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="s"&gt;-xS&lt;/span&gt; &lt;span class="o"&gt;$&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;TARGET_FILE:${PROJECT_NAME}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.s&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMAND&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_SIZE&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;$&amp;lt;&lt;/span&gt;&lt;span class="nv"&gt;TARGET_FILE:${PROJECT_NAME}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMENT&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Post-build: generating hex, bin and disassembly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;p&gt;加载CMake项目后点击小锤子即可编译。&lt;/p&gt;
&lt;p&gt;如果你好奇CMake代码是怎么编写出来的，可以尝试对照&lt;a class="link" href="#%E4%BB%8E%E5%A4%B4%E7%A7%BB%E6%A4%8D" &gt;3.2.1.从头移植&lt;/a&gt;理解一下^^&lt;/p&gt;
&lt;h2 id="上手开发"&gt;上手开发
&lt;/h2&gt;&lt;h3 id="更改gpio"&gt;更改GPIO
&lt;/h3&gt;&lt;p&gt;阅读代码发现，官方的示例中有非常完整的LED闪烁代码，但是接口定义和板子的不同。原理图告诉我们这个板子只有一个LED连接到GPIO：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429140719.png"
width="486"
height="334"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429140719_hu_d4b7cdd00f470d91.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429140719_hu_39fa9651ecf1ae27.png 1024w"
loading="lazy"
alt="LED原理图"
class="gallery-image"
data-flex-grow="145"
data-flex-basis="349px"
&gt;&lt;/p&gt;
&lt;p&gt;可以发现LED1连接的是GPIOC的PIN13。打开&lt;code&gt;Utilities\gd32vw553h_eval.h&lt;/code&gt;，进行以下更改&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429141354.png"
width="1027"
height="631"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429141354_hu_5423f56e9e70bb46.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429141354_hu_f0f72f01f118abcb.png 1024w"
loading="lazy"
alt="gd32vw553h_eval.h"
class="gallery-image"
data-flex-grow="162"
data-flex-basis="390px"
&gt;&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;Utilities\gd32vw553h_eval.c&lt;/code&gt;，进行以下更改&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429141526.png"
width="1055"
height="190"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429141526_hu_765e6640ec3aae0d.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429141526_hu_2508e53dd65cb46e.png 1024w"
loading="lazy"
alt="gd32vw553h_eval.c"
class="gallery-image"
data-flex-grow="555"
data-flex-basis="1332px"
&gt;&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;src\main.c&lt;/code&gt;，进行以下更改
&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429141620.png"
width="995"
height="361"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429141620_hu_6497a41d480d5561.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429141620_hu_a8da0738064aba30.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="275"
data-flex-basis="661px"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429141641.png"
width="907"
height="56"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429141641_hu_fec271add4766810.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429141641_hu_871e0048b8cb9cad.png 1024w"
loading="lazy"
alt="main.c"
class="gallery-image"
data-flex-grow="1619"
data-flex-basis="3887px"
&gt;&lt;/p&gt;
&lt;h3 id="下载和调试"&gt;下载和调试
&lt;/h3&gt;&lt;p&gt;虽然板子留了JTAG接口且声称支持J-Link，但是芯片是RISC-V架构的。除非你的J-Link是花大价钱买的新款正版，不然洗洗睡吧。
因本人没有支持RISC-V的J-Link，也没有购买官方的&lt;span class="hint" data-hint="板子9.9元，下载器&amp;lt;a href=&amp;#39;https://item.szlcsc.com/5722345.html&amp;#39;&amp;gt;350元&amp;lt;/a&amp;gt;XD根本买不起"&gt;GD-Link&lt;/span&gt;，所以这里只介绍如何使用串口下载。&lt;/p&gt;
&lt;p&gt;注意：以下工具均可在&lt;a class="link" href="https://www.gigadevice.com.cn/technical-resource/mcu-resource-center" target="_blank" rel="noopener"
&gt;兆易MCU资源中心&lt;/a&gt;找到最新版本。&lt;/p&gt;
&lt;h4 id="官方gui工具"&gt;官方GUI工具
&lt;/h4&gt;&lt;p&gt;使用官方的&lt;a class="link" href="https://download.gigadevice.com/Other_Software/GD32AllInOneProgrammer_win_V5.0.2.34907.7z" target="_blank" rel="noopener"
&gt;GD32 All-In-One Programmer&lt;/a&gt;即可方便地通过串口烧录程序。下载并解压后，双击打开&lt;code&gt;GD32AllInOneProgrammer.exe&lt;/code&gt;，调整以下红框处参数&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429234216.png"
width="987"
height="779"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429234216_hu_46cb9acb8e5c8fa.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429234216_hu_a5e03e4ae08836bd.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="126"
data-flex-basis="304px"
&gt;&lt;/p&gt;
&lt;p&gt;将&lt;code&gt;Port Name&lt;/code&gt;调整为&lt;span class="hint" data-hint="将开发板上的USB-C接口连接到电脑，Win&amp;#43;R输入devmgmt.msc，然后找到端口 (COM 和 LPT) -&amp;gt; USB-SERIAL CH340"&gt;CH340对应的串口号&lt;/span&gt;，将&lt;code&gt;Baud Rate&lt;/code&gt;调整为&lt;code&gt;512000&lt;/code&gt;。修改完成后，按住板子上的&lt;code&gt;BOOT0&lt;/code&gt;按钮并轻按&lt;code&gt;RESET&lt;/code&gt;按钮，此时MCU会进入BootLoader模式。现在你可以点击页面上的&lt;code&gt;Connect&lt;/code&gt;按钮连接串口了。&lt;/p&gt;
&lt;p&gt;连接完成且下方出现&lt;code&gt;Device Information&lt;/code&gt;后，&lt;span class="hint" data-hint="某些版本中存在直接输入路径不生效的bug，所以建议大家都使用Browse找到固件"&gt;在右侧Download处点击Browse按钮&lt;/span&gt;，找到编译好的固件后&lt;code&gt;Download&lt;/code&gt;，等待下方进度条跑满后，在&lt;strong&gt;没有&lt;/strong&gt;按住&lt;code&gt;BOOT0&lt;/code&gt;按钮的状态下再次轻按&lt;code&gt;RESET&lt;/code&gt;按钮，此时固件烧录并启动成功。&lt;/p&gt;
&lt;h4 id="嵌入ide"&gt;嵌入IDE
&lt;/h4&gt;&lt;p&gt;使用官方的&lt;a class="link" href="https://download.gigadevice.com/Other_Software/GD32_ISP_CLI%28Windows%29_V5.1.0.39034.7z" target="_blank" rel="noopener"
&gt;GD32_ISP_CLI&lt;/a&gt;配合各种脚本即可做到丝滑地编译+烧录。在进行以下操作前，请确保&lt;code&gt;GD32_ISP_CLI.exe&lt;/code&gt;已在环境变量里。&lt;/p&gt;
&lt;h5 id="vscodeeide"&gt;VSCode(EIDE)
&lt;/h5&gt;&lt;p&gt;&lt;img src="https://blog.ctree.site/p/gd32vw553-dev/20260429222727.png"
width="327"
height="180"
srcset="https://blog.ctree.site/p/gd32vw553-dev/20260429222727_hu_bf3b0c3828b4480f.png 480w, https://blog.ctree.site/p/gd32vw553-dev/20260429222727_hu_c1808f2e2bca6609.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="181"
data-flex-basis="436px"
&gt;&lt;/p&gt;
&lt;p&gt;待补充&lt;/p&gt;
&lt;h5 id="clioncmake"&gt;CLion(CMake)
&lt;/h5&gt;&lt;p&gt;在CMakeLists.txt中加入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma" id="chroma-1"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="code-1-1"&gt; 1
&lt;/span&gt;&lt;span class="lnt" id="code-1-2"&gt; 2
&lt;/span&gt;&lt;span class="lnt" id="code-1-3"&gt; 3
&lt;/span&gt;&lt;span class="lnt" id="code-1-4"&gt; 4
&lt;/span&gt;&lt;span class="lnt" id="code-1-5"&gt; 5
&lt;/span&gt;&lt;span class="lnt" id="code-1-6"&gt; 6
&lt;/span&gt;&lt;span class="lnt" id="code-1-7"&gt; 7
&lt;/span&gt;&lt;span class="lnt" id="code-1-8"&gt; 8
&lt;/span&gt;&lt;span class="lnt" id="code-1-9"&gt; 9
&lt;/span&gt;&lt;span class="lnt" id="code-1-10"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-CMake" data-lang="CMake"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;COM_PORT&lt;/span&gt; &lt;span class="s"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;# 这里设置你的串口号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;find_program&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;GD32_TOOL_PATH&lt;/span&gt; &lt;span class="s"&gt;GD32_ISP_CLI.exe&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;get_filename_component&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;GD32_TOOL_DIR&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GD32_TOOL_PATH&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="s"&gt;DIRECTORY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&lt;/span&gt;&lt;span class="nb"&gt;add_custom_target&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;flash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMAND&lt;/span&gt; &lt;span class="s"&gt;GD32_ISP_CLI.exe&lt;/span&gt; &lt;span class="s"&gt;-c&lt;/span&gt; &lt;span class="s"&gt;--pn&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;COM_PORT&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="s"&gt;--br&lt;/span&gt; &lt;span class="s"&gt;512000&lt;/span&gt; &lt;span class="s"&gt;-i&lt;/span&gt; &lt;span class="s"&gt;GD32VW553HMQ6&lt;/span&gt; &lt;span class="s"&gt;-d&lt;/span&gt; &lt;span class="s"&gt;--a&lt;/span&gt; &lt;span class="s"&gt;08000000&lt;/span&gt; &lt;span class="s"&gt;--fn&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CMAKE_BINARY_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.bin&lt;/span&gt; &lt;span class="s"&gt;--n&lt;/span&gt; &lt;span class="s"&gt;||&lt;/span&gt; &lt;span class="s"&gt;exit&lt;/span&gt; &lt;span class="s"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;WORKING_DIRECTORY&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GD32_TOOL_DIR&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;DEPENDS&lt;/span&gt; &lt;span class="o"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PROJECT_NAME&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;COMMENT&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Flashing via UART...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;p&gt;随后选择构建目标&lt;code&gt;flash&lt;/code&gt;，点击小锤子即可编译并烧录。&lt;/p&gt;
&lt;h5 id="疑难解答"&gt;疑难解答
&lt;/h5&gt;&lt;p&gt;Q: 我正在尝试在其他工具链中使用这个CLI，为什么提示&lt;code&gt;Init OptionBytes failed!&lt;/code&gt;？&lt;/p&gt;
&lt;p&gt;A: 在目前最新的5.1.0.39034版本下，这个CLI工具依赖当前工作目录来获取&lt;code&gt;OptionBytesXML&lt;/code&gt;。你需要想办法切换工作目录，或是把&lt;code&gt;OptionBytesXML&lt;/code&gt;文件夹复制到当前目录下。&lt;/p&gt;
&lt;h2 id="进阶sdk"&gt;进阶SDK
&lt;/h2&gt;&lt;p&gt;要想使用蓝牙和WiFi，我们需要构建专用的SDK包。SDK内包括两个部分：&lt;code&gt;MBL&lt;/code&gt;和&lt;code&gt;MSDK&lt;/code&gt;。&lt;code&gt;MBL&lt;/code&gt;就是我们固件的&lt;code&gt;BootLoader&lt;/code&gt;，负责启动系统前的初始化工作。我们想要二次开发一般只需要修改&lt;code&gt;MSDK&lt;/code&gt;部分，也就是&lt;code&gt;MSDK\app&lt;/code&gt;文件夹内的代码。
在执行以下操作前，请先下载&lt;a class="link" href="https://download.gigadevice.com/Other_Software/GD32VW55x_RELEASE_V1.0.3g.zip" target="_blank" rel="noopener"
&gt;GD32VW553系列Wi-Fi &amp;amp; BLE SDK&lt;/a&gt;, &lt;a class="link" href="https://download.nucleisys.com/upload/files/toolchain/gcc/nuclei_riscv_newlibc_prebuilt_win32_2022.12.zip" target="_blank" rel="noopener"
&gt;Nuclei RISC-V Embedded Toolchain(Baremetal/RTOS + Newlibc)&lt;/a&gt;和&lt;a class="link" href="https://github.com/openocd-org/openocd/releases/latest" target="_blank" rel="noopener"
&gt;OpenOCD&lt;/a&gt;，并将工具链和OpenOCD添加至环境变量。&lt;/p&gt;
&lt;p&gt;注意：以上工具可在&lt;a class="link" href="https://www.gigadevice.com.cn/technical-resource/mcu-resource-center" target="_blank" rel="noopener"
&gt;兆易MCU资源中心&lt;/a&gt;和&lt;a class="link" href="https://nucleisys.com/download.php" target="_blank" rel="noopener"
&gt;芯来工具链&lt;/a&gt;找到最新版本。&lt;/p&gt;
&lt;p&gt;如果你想尝试使用更新版本的工具链，请务必检查目标平台是否为riscv-nuclei-elf！！
&lt;span class="hint" data-hint="Nuclei工具链从2024.02版本开始，将目标平台从riscv-nuclei-elf更改为了riscv64-unknown-elf。这同时代表着工具链可执行文件的文件名已被更改，你需要将toolchain.cmake中的CROSS_COMPILE改为riscv64-unknown-elf。与此同时，经过测试截至2025.10版本，新版工具链并不支持我们需要的DSP指令集扩展：&amp;lt;code&amp;gt;riscv64-unknown-elf-gcc.exe: error: &amp;#39;-march=rv32imafcbp&amp;#39;: extension &amp;#39;p&amp;#39; is unsupported standard single letter extension&amp;lt;/code&amp;gt;。"&gt;(为什么？)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;注意：必须下载并将OpenOCD添加至环境变量，即使你使用串口下载。
&lt;span class="hint" data-hint="在CMakeLists中调用image_afterbuild.bat执行后处理时，传参用的是&amp;lt;code&amp;gt;COMMAND ${TARGET_PROJECT_DIR}/image_afterbuild.bat ${CROSS_COMPILE}- ECDSA256 CERT ${OPENOCD_DIR} ${PROJECT_SOURCE_DIR}&amp;lt;/code&amp;gt;，此时如果OpenOCD不存在环境变量中， 本该传递给位置5的PROJECT_SOURCE_DIR就会来到位置4上，导致后处理脚本中无法获取项目目录，最终生成bin文件失败。"&gt;(为什么？)&lt;/span&gt;&lt;/p&gt;
&lt;h3 id="clioncmake-1"&gt;CLion(CMake)
&lt;/h3&gt;&lt;p&gt;打开项目&lt;code&gt;GD32VW55x_RELEASE_V1.0.3g&lt;/code&gt;，点击&lt;code&gt;设置&lt;/code&gt; - &lt;code&gt;构建、执行、部署&lt;/code&gt; - &lt;code&gt;CMake&lt;/code&gt;，将CMake选项更改为&lt;code&gt;-DCMAKE_TOOLCHAIN_FILE:PATH=scripts/cmake/toolchain.cmake&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;MSDK\plf\src\uart\uart_config.h&lt;/code&gt;，将第81行的&lt;code&gt;#define LOG_UART UART2&lt;/code&gt;改为&lt;code&gt;#define LOG_UART USART0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;打开MBL\mainboot\mbl.c，将第48行的&lt;code&gt;#define LOG_UART UART2&lt;/code&gt;改为&lt;code&gt;#define LOG_UART USART0&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;将120行的&lt;br&gt;
gpio_mode_set(GPIOA, GPIO_MODE_AF, &lt;strong&gt;GPIO_PUPD_NONE&lt;/strong&gt;, GPIO_PIN_8);&lt;br&gt;
改为&lt;br&gt;
gpio_mode_set(GPIOA, GPIO_MODE_AF, &lt;strong&gt;GPIO_PUPD_PULLUP&lt;/strong&gt;, GPIO_PIN_8);&lt;br&gt;
并同样修改122行的代码，配置上拉模式。&lt;/p&gt;
&lt;p&gt;打开&lt;code&gt;MSDK\plf\src\uart\uart.h&lt;/code&gt;，将58-64行的&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma" id="chroma-2"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="code-2-1"&gt;1
&lt;/span&gt;&lt;span class="lnt" id="code-2-2"&gt;2
&lt;/span&gt;&lt;span class="lnt" id="code-2-3"&gt;3
&lt;/span&gt;&lt;span class="lnt" id="code-2-4"&gt;4
&lt;/span&gt;&lt;span class="lnt" id="code-2-5"&gt;5
&lt;/span&gt;&lt;span class="lnt" id="code-2-6"&gt;6
&lt;/span&gt;&lt;span class="lnt" id="code-2-7"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-C" data-lang="C"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_TX_GPIO GPIOA
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_TX_PIN GPIO_PIN_0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_TX_AF_NUM GPIO_AF_0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_RX_GPIO GPIOA
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_RX_PIN GPIO_PIN_1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_RX_AF_NUM GPIO_AF_0&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;p&gt;改为&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma" id="chroma-3"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt" id="code-3-1"&gt;1
&lt;/span&gt;&lt;span class="lnt" id="code-3-2"&gt;2
&lt;/span&gt;&lt;span class="lnt" id="code-3-3"&gt;3
&lt;/span&gt;&lt;span class="lnt" id="code-3-4"&gt;4
&lt;/span&gt;&lt;span class="lnt" id="code-3-5"&gt;5
&lt;/span&gt;&lt;span class="lnt" id="code-3-6"&gt;6
&lt;/span&gt;&lt;span class="lnt" id="code-3-7"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-C" data-lang="C"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_TX_GPIO GPIOB
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_TX_PIN GPIO_PIN_15
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_TX_AF_NUM GPIO_AF_8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_RX_GPIO GPIOA
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_RX_PIN GPIO_PIN_8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#define USART0_RX_AF_NUM GPIO_AF_2&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;p&gt;现在你应该能够编译MBL和MSDK了。编译完的固件bin在&lt;code&gt;scripts\images&lt;/code&gt;文件夹下。&lt;/p&gt;</description></item></channel></rss>