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

MianQi   2021-2-19 10:20 楼主

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

 

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

IMG_20210219_092722.jpg

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

 

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

粘贴就有错:

捕获-1.JPG 选择“Save as UTF-8”可以过去。

接下来报错:

捕获-3.JPG 解决办法是右键点击项目名称,在属性设置中将硬件路径加进去:

无标题.png

 

出现下述错误:

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[SIZE];
         ^~
../User/main.c:4:17: error: 'SIZE' undeclared (first use in this function)
         u8 data[SIZE];
                 ^~~~
../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 '<stdio.h>' or provide a declaration of 'printf'
../User/main.c:1:1:
+#include <stdio.h>
 
../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[SIZE];
            ^~~~
make: *** [User/subdir.mk:24: User/main.o] Error 1

10:04:19 Build Failed. 6 errors, 9 warnings. (took 665ms)

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

    #include "debug.h"
    #include "iic.h"


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

    /* Global define */
    #define SIZE sizeof(TEXT_Buffer)

编译通过:

捕获-5.JPG 下载也没有问题:

捕获-6.JPG

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

 

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

捕获-4.JPG

 

再看下载这里的附件打开后的提示:

IIC_EEPROM.JPG

这个问题尚待解决。

本帖最后由 MianQi 于 2021-2-19 10:20 编辑
“Everyone wants the project to be good, fast, and cheap... pick two.” - Unknown

回复评论 (7)

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

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-2-25 22:32

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

“Everyone wants the project to be good, fast, and cheap... pick two.” - Unknown
点赞  2021-2-26 16:56

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

 

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

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

“Everyone wants the project to be good, fast, and cheap... pick two.” - Unknown
点赞  2021-3-5 07:49
引用: MianQi 发表于 2021-3-5 07:49 可能是因为示例代码不是直接从调试通过的项目空间内粘贴过来地,也可能是因为示例资料不是出自一人之手。 ...

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

点赞  2021-3-5 14:33

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

点赞  2021-4-20 14:42

找到了,在这里:http://www.wch.cn/downloads/CH32xRM_PDF.html

“Everyone wants the project to be good, fast, and cheap... pick two.” - Unknown
点赞  2021-4-24 11:38
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复