最近有小伙伴咨询W806的CDS 开发环境,如何支持C++ 开发;一看这位小伙伴就是eclipse 的死忠粉 ; 哈哈哈,那我就专门写一篇关于如何支持C++的简短教程给到大家,满足大家的需求;制作好的工程链接可以下载尝试 https://www.aliyundrive.com/s/ZN8zA5EvznL
可以参考这边文章内容 : http://ask.winnermicro.com/article/68.html
也可以直接阿里云链接下载: https://www.aliyundrive.com/s/CfdxmJu2Tc1
使用CDS 打开W806的SDK 如下图
默认例程开启了RTOS ,为了简化转换C++步骤,大家可以还原为裸机工程,不还原也无所谓,没有什么影响,不介意的可以跳过该步骤
修改后的 main 函数,编译没问题后,烧录到板子中确保没问题后,在进行下面步骤
右键项目文件,按照图中步骤点击
在弹出的对话框中 选择 编译工具链<W806 内核为CK804 采用 平头哥abiv2指令集>
修改system.c 文件
路径为 platform -----> arch --->xt804 ---->bsp 下
在 SystemInit 函数末尾添加编译器对C++ 构造函数初始化的调用接口 _init() 函数 ,该函数实现用户无需关心 只需要引用即可 。
关于 _fini() 函数的调用,实在 main 函数结束之后进行回收的时候使用,由于是单片机程序 main 函数一旦结束,也就意味着系统异常了,因此
不添加调用也是可以的,添加过后如图所示
大家也可以直接复制
#include <csi_config.h>
#include "csi_core.h"
extern void _init();
extern void _fini();
void SystemInit(void)
{
xxxxxx
xxxxxx
_init();
}
包含 C++ 需要的头文件路径
前期准备工作基本完成了,剩下的就可以编写C++文件了
由于是C++ 编译还需要在main.cpp 的内容的最开始和结束 加上 宏 限定为按照C 的方式编译
添加好的如图所示
为防止写错,也可粘贴下面提供的
#ifdef __cplusplus
extern "C" {
#endif
xxxx
xxxx
#ifdef __cplusplus
}
#endif
以上步骤已经完成了SDK C 语言编译到 C++的编译过程 ,用户可以自定义添加C++文件进行测试,本次也基于此写一个小小的例子供大家参考
右键需要添加 cpp 的地方 进行类的创建,本次选择 src 目录
随后按照 isme 大佬的例程补全实现即可
在 main.cpp 中包含对应 头文件进行测试即可,我这里顺便 测试了 string 有些需要使用C++ 的 string 类型;编译烧录 查看串口 0 的打印信息
太厉害了