拓展补充帖: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,操作更方便哦
完
历害了,加油:) 给力的技术贴! 一粒尘a_a 发表于 2021-5-30 22:15
给力的技术贴!
ARM到RISC-V的给力操作!!! 写的真好
页:
[1]