草帽王子 发表于 2021-5-19 18:17:50

拓展补充帖:F103到V103移植说明

本帖最后由 草帽王子 于 2021-5-19 19:01 编辑

F103到V103移植说明

本次说明主要介绍如何从一个STM32F103工程移植一个程序到CH32V103工程,具体步骤如下:

1、首先使用MounRiver新建一个CH32V103工程,新建工程可参考如下链接:
https://bbs.21ic.com/icview-3037286-1-1.html?_dsign=f44376cc

新建工程如下图所示:

2、本文以STM32的一个PWM例程为例进行移植,STM32F103例程如下:

3、将STM32F103工程文件HARDWARE文件夹下.c文件和.h文件复制粘贴到V103工程文件Hradware文件夹下,具体如下:
STM32F103工程文件HARDWARE文件夹
CH32V103工程文件Hardware文件夹

4、复制粘贴完成后,重新刷新CH32V103工程,具体如下:

选中工程,右击,点击Refresh


刷新完成之后,工程显示如下:

由下图可见已经包含了我们复制粘贴过来的几个文件

5、添加路径,将复制粘贴后文件添加到工程路径中,具体如下:

6、添加路径完成之后显示如下:

其他两个路径添加步骤与上述一致,全部添加完成之后如下,最后依次点击Apply和Apply and Close完成路径添加
   
7、修改复制粘贴过来的几个文件的头文件:

修改前:

修改后:

因为ch32v10x_conf.h文件是头文件集合,因此头文件使用ch32v10x_conf.h文件就好了,其内容如下:
其他几个文件与上述方法类似

8、修改main函数内容,直接复制粘贴过来然后修改头文件即可,具体如下

STM32F103 main函数内容如下:

复制粘贴移植到CH32V103之后并修改头文件,内容如下:

debug.h文件主要包含延时函数和串口打印相关函数。此外,由于延时相关函数的定义不同(延时函数定义大小写不同),具体看下图,因此需要对程序中延时函数进行修改。

STM32F103 keil里面:

CH32V103 MounRiver里面

此外,串口初始化函数也需要修改,具体修改前后对比如下:

修改前
修改后

此外,由于V103暂时不支持位操作,因此需要将led.h文件中相关位操作定义去掉,具体如下:

修改前
修改后

修改之后可以使用以下几个函数来定义表示LED灯亮灭

此外,此处LED初始化函数函数中使用PE5引脚,如下图,但我们芯片目前并没有那么多引脚,因此需要对引脚定义进行修改,具体如下:

修改前:
修改后:

关于LED灯亮灭程序部分修改:
修改前:
修改后:

9、修改完成之后,编译运行,没有报错,如下图,下载到开发板,程序运行正常,移植完成。

注意:若程序中用到中断,还需在中断函数所在文件头部添加如下一行代码,如下图所示:

Template.rar
链接:https://pan.baidu.com/s/1i37P-p5r60WcWOYyUfqzYw
提取码:sdzk
复制这段内容后打开百度网盘手机App,操作更方便哦


PWM输出实验.rar
链接:https://pan.baidu.com/s/112Fd-OCsFjHZ7Ob0zXcniQ
提取码:fe32
复制这段内容后打开百度网盘手机App,操作更方便哦



发表于 2021-5-19 19:43:12

历害了,加油:)

一粒尘a_a 发表于 2021-5-30 22:15:42

给力的技术贴!

51MCU 发表于 2021-5-31 13:49:28

一粒尘a_a 发表于 2021-5-30 22:15
给力的技术贴!

ARM到RISC-V的给力操作!!!

小飞飞 发表于 2021-5-31 20:07:59

写的真好
页: [1]
查看完整版本: 拓展补充帖:F103到V103移植说明