最近有小夥伴諮詢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 的打印信息
太厲害了