本帖最后由 RISCVLAR 于 2021-4-28 15:17 编辑
F103到V103移植说明
本次说明主要介绍如何从一个STM32F103工程移植一个程序到CH32V103工程,具体步骤如下:
1、首先使用MounRiver新建一个CH32V103工程,新建工程可参考如下链接: 新建工程如下图所示:
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、修改完成之后,编译运行,没有报错,如下图,下载到开发板,程序运行正常,移植完成。
注意:若程序中用到中断,还需在中断函数所在文件头部添加如下一行代码,如下图所示:
|