wintonson 发表于 2021-1-22 13:02

【RISC-V MCU CH32V103测评】 ---前进的维子---干货 调试方法

本帖最后由 wintonson 于 2021-1-23 17:25 编辑

<div style="border-bottom:solid windowtext 1.0pt; padding:0cm 0cm 1.0pt 0cm">&nbsp;
<p align="center" style="border:none; text-align:center; padding:0cm"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-size:12.0pt"><span style="background:white"><span style="font-family:&quot;微软雅黑&quot;,sans-serif"><span style="color:#444444"><span style="letter-spacing:.75pt">【RISC-V MCU CH32V103测评】 ---前进的维子---干货调试方法 </span></span></span></span></span></span></span></p>
</div>

<p style="text-align: right;"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">前进的维子</span></span></span></p>

<p style="text-align: right;"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2021<span style="font-family:宋体">年</span>1<span style="font-family:宋体">月</span>22<span style="font-family:宋体">日</span></span></span></p>

<p>&nbsp;</p>

<p><span style="font-size:22pt"><span style="line-height:240%"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">前言:</span></span></span></span></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">这个系列测评,属于保姆级学习文档。如果是初学者,本文非常重要!</span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">&nbsp; 本文将以官方例子&ldquo;</span>LED_Toogle<span style="font-family:宋体">&rdquo;为例,从最基本的连线开始,一步一步的将程序的调试下载、调试的方法。希望对大家有帮助。</span></span></span></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">本文行文为笔记风格:按步骤设置标题。</span></span></span></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第一步:分析原理图。</span></span></span><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第二步:线路连接。</span></span></span><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第三步:调试概要。</span></span></span></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">原则上会了第三步,结合芯片手册,就可以想怎么玩就怎么玩了。</span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp; &nbsp; &nbsp;<span style="font-family:宋体">本文的读者必须会看原理图,会</span>c<span style="font-family:宋体">语言。</span></span></span></p>

<p><span style="font-size:22pt"><span style="line-height:240%"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第一步:分析原理图</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">从开发板(确切的说只能算是核心板)的原理图入手。首先确定板子的型号是:</span>CH32V103C_MINI<span style="font-family:宋体">。然后看原理图。在原理图上主要看:</span>1<span style="font-family:宋体">:电源供电。</span>2<span style="font-family:宋体">:调试口解法。</span>3<span style="font-family:宋体">:本次代码中需要用到的外设和对应的</span>IO<span style="font-family:宋体">口。</span></span></span></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p class="imagemiddle" style="text-align: center;"></p>

<p class="imagemiddle" style="text-align: center;"></p>

<p>&nbsp;</p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">发现电路里两个灯都是悬空的,也就是要用杜邦线进行连接。</span></span></span></p>

<p><span style="font-size:22pt"><span style="line-height:240%"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第二步:线路连接</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">因为核心板所有针脚都引出来,所以除了用杜邦线链接仿真线外,还要连接上</span>IO<span style="font-family:宋体">和</span>LED<span style="font-family:宋体">的相关引脚。</span></span></span></p>

<p class="imagemiddle" style="text-align: center;"></p>

<p><span style="font-size:22pt"><span style="line-height:240%"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第三步:调试方法(很重要!很重要!很重要!)</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family:宋体">维子会先介绍一般程序问题出在哪里。然后,将以观察</span>GPIOA<span style="font-family:宋体">的外设寄存器为例介绍方法。</span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">首先要说,这个</span>IDE<span style="font-family:宋体">软件的功能是很强大的,我们看下面的截图。可以看出来,通过</span>IDE<span style="font-family:宋体">能看到:外设、寄存器、变量&hellip;&hellip;。编写单片机的驱动程序部分的时候,出现问题的原因中有</span>90%<span style="font-family:宋体">是在内部外设寄存器的配置的不正确。调试中,观察外设的寄存器值是很重要的。特别是在解决</span>BUG<span style="font-family:宋体">的时候。</span></span></span></p>

<p></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">在编写应用部分,如果出现</span>bug<span style="font-family:宋体">,绝大部分是变量计算出现的问题。所以,我们重点关注:变量</span> <span style="font-family:宋体">和</span> <span style="font-family:宋体">外设。</span> <span style="font-family:宋体">也就是上图中的:</span>Peripherals <span style="font-family:宋体">和</span> Variables <span style="font-family:宋体">。其他的东西也是很有用的。比如调试指针的时候,指针所指的内容变来变去,不直观,那么我们可以用</span>memory<span style="font-family:宋体">来具体的看内存。</span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">下面我们用</span>GPIO A<span style="font-family:宋体">这个外设的亮和灭,介绍一下调试过程。</span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第一步:选中外设,如下图</span></span></span></p>

<p></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第二步:</span>IDE<span style="font-family:宋体">会自动的再</span>memory<span style="font-family:宋体">窗口中显示(如下图)</span></span></span></p>

<p style="text-align:justify"></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">第三步:设置相关断点(双机前面的行号)</span> <span style="font-family:宋体">并运行。会有下图说明:</span></span></span></p>

<p></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><span style="font-size:22pt"><span style="line-height:240%"><span style="font-family:Calibri,sans-serif"><span style="font-family:宋体">总结:</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:Calibri,sans-serif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family:宋体">本文,以</span>GPIO<span style="font-family:宋体">的闪灯程序为例,讲解了,看图,连线,和调试过程。最主要的过程是:调试过程中观察寄存器和外设寄存器的方法。希望维子的文章能给大家启发。</span></span></span></p>

<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 附件把本篇和上一篇的pdf文档。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

wintonson 发表于 2021-1-22 13:19

<p>编辑帖子很费劲,编辑完不能修改,一旦修改了,行间距就变成了三行。还要手动一行一行的再调整。</p>

乌克丽丽 发表于 2021-1-22 13:54

<p>系列帖:congratulate:</p>

w494143467 发表于 2021-1-23 17:05

<p>最后多出几张图片应该是文章中没用到的,这些要记得删除哦!</p>

wintonson 发表于 2021-1-23 17:26

w494143467 发表于 2021-1-23 17:05
最后多出几张图片应该是文章中没用到的,这些要记得删除哦!

<p>已经修改OK了 ,我刚学发帖子,还不是很熟练。&nbsp;</p>

littleshrimp 发表于 2021-1-31 15:04

wintonson 发表于 2021-1-22 13:19
编辑帖子很费劲,编辑完不能修改,一旦修改了,行间距就变成了三行。还要手动一行一行的再调整。

<p>确实有这个问题</p>

东厂仅一位 发表于 2021-2-5 17:36

<p>我有个问题:较小的向量寄存器编写的VLS代码在较新的CPU上运行时,为什么不能用较宽的向量寄存器?要一次又一次地将现有代码才能使用新的VLS ISA。这是为啥?求解?</p>

freebsder 发表于 2021-2-5 21:49

<p>谢谢分享,论坛发帖时不时要出点问题,现在好多了都。</p>

annysky2012 发表于 2021-2-6 08:36

<p>写的非常好。持续关注</p>

wy81751526 发表于 2021-5-17 20:33

<p>大神,我想问一下我调试的时候无法进行代码跟踪是怎么回事,程序运行时代码行始终没有变化,keil在调试的时候还可以显示当前程序运行到哪一行了,这个软件完全不显示,是本身软硬件设计的问题吗</p>

freebsder 发表于 2021-5-17 23:20

<p>谢谢分享,期待后续!</p>
页: [1]
查看完整版本: 【RISC-V MCU CH32V103测评】 ---前进的维子---干货 调试方法