MianQi 发表于 2021-2-19 10:20

【RISC-V MCU CH32V103测评】- 5:离开API进入Assembly不成,重返API......

本帖最后由 MianQi 于 2021-2-19 10:20 编辑

<p>前一个帖子,试用EXTI报错。本想按照之前提交的测评计划开始测试汇编代码,但是资料不够,只有一个地址映射表,没有寄存器的地址,而且,在芯片介绍里只是提到了&ldquo;RISC-V V3A&rdquo;,没有说用的是哪一种指令模式,所以暂时只能作罢。</p>

<p>&nbsp;</p>

<p>继续测试API, 这次想要测试IIC驱动的EEPROM - 24C08N:</p>

<p></p>

<p>,依然出错。之前,我想要熟悉一下沁恒的API,所以每个实例都是把示例代码手输进去,这次为了保险起见,直接拷贝粘贴,但是以然不能通过,这是什么原因?</p>

<p>&nbsp;</p>

<p>先看来自这里的代码&mdash;&mdash;https://bbs.21ic.com/forum.php?mod=viewthread&amp;tid=3048142&amp;page=&amp;extra=#pid11638428:、</p>

<p>粘贴就有错:</p>

<p>选择&ldquo;Save as UTF-8&rdquo;可以过去。</p>

<p>接下来报错:</p>

<p>解决办法是右键点击项目名称,在属性设置中将硬件路径加进去:</p>

<p></p>

<p>&nbsp;</p>

<p>出现下述错误:</p>

<pre>
<code>10:04:18 **** Incremental Build of configuration obj for project CH32V103C8T6 ****
make -j4 all
../User/main.c: In function 'main':
../User/main.c:4:9: error: unknown type name 'u8'
         u8 data;
         ^~
../User/main.c:4:17: error: 'SIZE' undeclared (first use in this function)
         u8 data;
               ^~~~
../User/main.c:4:17: note: each undeclared identifier is reported only once for each function it appears in
../User/main.c:6:9: warning: implicit declaration of function 'Delay_Init' [-Wimplicit-function-declaration]
         Delay_Init();
         ^~~~~~~~~~
../User/main.c:7:9: warning: implicit declaration of function 'USART_Printf_Init' [-Wimplicit-function-declaration]
         USART_Printf_Init(115200);
         ^~~~~~~~~~~~~~~~~
../User/main.c:8:9: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
         printf("SystemClk:%d\r\n",SystemCoreClock);
         ^~~~~~
../User/main.c:8:9: warning: incompatible implicit declaration of built-in function 'printf'
../User/main.c:8:9: note: include '&lt;stdio.h&gt;' or provide a declaration of 'printf'
../User/main.c:1:1:
+#include &lt;stdio.h&gt;

../User/main.c:8:9:
         printf("SystemClk:%d\r\n",SystemCoreClock);
         ^~~~~~
../User/main.c:8:35: error: 'SystemCoreClock' undeclared (first use in this function)
         printf("SystemClk:%d\r\n",SystemCoreClock);
                                 ^~~~~~~~~~~~~~~
../User/main.c:10:9: warning: implicit declaration of function 'AT24CXX_Init' [-Wimplicit-function-declaration]
         AT24CXX_Init();
         ^~~~~~~~~~~~
../User/main.c:13:9: warning: implicit declaration of function 'AT24CXX_Write' [-Wimplicit-function-declaration]
         AT24CXX_Write(100,(u8*)TEXT_Buffer,SIZE);//写入数æ?®
         ^~~~~~~~~~~~~
../User/main.c:13:28: error: 'u8' undeclared (first use in this function)
         AT24CXX_Write(100,(u8*)TEXT_Buffer,SIZE);//写入数æ?®
                            ^~
../User/main.c:13:31: error: expected expression before ')' token
         AT24CXX_Write(100,(u8*)TEXT_Buffer,SIZE);//写入数æ?®
                               ^
../User/main.c:16:9: warning: implicit declaration of function 'Delay_Ms' [-Wimplicit-function-declaration]
         Delay_Ms(500);
         ^~~~~~~~
../User/main.c:19:9: warning: implicit declaration of function 'AT24CXX_Read' [-Wimplicit-function-declaration]
         AT24CXX_Read(100,data,SIZE);               //读å?–æ•°æ?®
         ^~~~~~~~~~~~
../User/main.c:4:12: warning: unused variable 'data' [-Wunused-variable]
         u8 data;
            ^~~~
make: *** Error 1

10:04:19 Build Failed. 6 errors, 9 warnings. (took 665ms)</code></pre>

<p>是因为没有把这四行加到文件的开头:</p>

<pre>
<code>    #include "debug.h"
    #include "iic.h"


    /* Global Variable */
    const u8 TEXT_Buffer[]={"CH32V10x I2C TEST"};

    /* Global define */
    #define SIZE sizeof(TEXT_Buffer)</code></pre>

<p>编译通过:</p>

<p>下载也没有问题:</p>

<p></p>

<p>但是我的串口还是没有显示,可能跟我的串口工具有关,谁有合适的串口调试工具,希望能跟帖推荐。</p>

<p>&nbsp;</p>

<p>补充说明,论坛本身的粘贴功能不能用:</p>

<p></p>

<p>&nbsp;</p>

<p>再看下载这里的附件打开后的提示:</p>

<p></p>

<p>这个问题尚待解决。</p>

freebsder 发表于 2021-2-25 22:32

<p>芯片手册里没有说寄存器的地址吗?那怎么搞?</p>

MianQi 发表于 2021-2-26 16:56

<p>可能是厂家没有想到还会有人想要用汇编,但这个功能是必要地,因为这能体现出RISC-V 32个寄存器的特色,发挥出它的潜力。</p>

Jacktang 发表于 2021-3-4 21:37

<p>比较疑惑,把示例代码直接拷贝粘贴,不能通过,这是什么原因?</p>

<p>&nbsp;</p>

MianQi 发表于 2021-3-5 07:49

Jacktang 发表于 2021-3-4 21:37
比较疑惑,把示例代码直接拷贝粘贴,不能通过,这是什么原因?

&nbsp;

<p>可能是因为示例代码不是直接从调试通过的项目空间内粘贴过来地,也可能是因为示例资料不是出自一人之手。</p>

Jacktang 发表于 2021-3-5 14:33

MianQi 发表于 2021-3-5 07:49
可能是因为示例代码不是直接从调试通过的项目空间内粘贴过来地,也可能是因为示例资料不是出自一人之手。 ...

<p>官网生态系统需要提升,客户体验感不好</p>

qhll 发表于 2021-4-20 14:42

<p>你好,关于CH32V103具体资料,可参考CH32xRM这个手册,里面有对V103及其外设具体介绍,包括寄存器及其地址详细介绍。关于该手册,可在官网搜索CH32V103进行下载。此外,CH32V103支持RV32IMAC指令集组合,支持硬件乘法和除法。关于帖子中提出的移植报错问题,可能是由于开发环境字体及大小配置不同导致的,不影响正常使用。最后,关于编译报错问题,建议检查原程序编译是否报错,移植过程是否存在问题。</p>

MianQi 发表于 2021-4-24 11:38

<p>找到了,在这里:http://www.wch.cn/downloads/CH32xRM_PDF.html</p>
页: [1]
查看完整版本: 【RISC-V MCU CH32V103测评】- 5:离开API进入Assembly不成,重返API......