【stm32】【KEIL】【单片机】【C++ 】 嵌入式开发事半功倍

不管不管就不管,我就要用c++开发!【C++ NO.1】!!!

一直在用的语言都是C【单片机】,前段时间学OPENCV,又重新拾起了C++。虽然但是,眼馋的不是C++语言的特性(面向对象是思想,不是语言特性,c语言也可以实现c++ 继承 封装 多态),而是C++那令人眼花缭乱、经过千锤百炼的各种库(包括标准库)。以前也看过单片机用C++开发的相关博文,讲的没那么仔细,对初学者有帮助但是没那么大(本人愚笨,参考别人的博文搞不定)所以有了本文!!!(废)话多不表,开整!!!

工程包:用的STM32CUBEMX生产的工程

RTOS:FreeRTOS,官网最新的FreeRTOS包(我是自己移植的,移植步骤查资料)

目的:用C++写一个简单的测试程序,对FreeRTOS任务做简单的封装

原则:不要在同一个.c(c源文件)或者.cpp(c++源文件)或者.hpp(c++头文件)或者.h(c头文件(暂时就这么叫吧))文件中c和c++混编。.cpp(c++源文件)和.hpp(c++头文件)只做和C++有关的,.c(c源文件)和.h(c头文件)只做和C有关的。最好是C代码嵌入到C++代码中,而不要C++嵌入到C代码中

用法举例:

在工程中建了用c++写的测试代码,有3个文件

.cpp文件:c++相关的代码

.hpp文件:类的声明,c语言头文件的引用(要加extern "C",看图)以及用c++写的对外函数的接口的声明(要加extern "C",看图)

.h文件:最不可思议的就是这个头文件了,所做的事就是把用c++写的对外函数的接口用extern“引用”,如果其他.c文件中的函数要调用c++写的接口,只需要包含这个头文件就可以了。

1)KEIL的设置:去掉勾选的MircoLIB。去掉勾选的原因如下:

2)RTE环境的设置,这一步的目的就是 串口对C++的标准输入输出重定向。

3)接下来就是C++标准输入输出重定向的实现

第二步做完以后,工程目录会多出compiler,如下图所示!我们需要对int stdout_putchar (int ch)进行实现(cin没有实现,因为不知道怎么进行阻塞。retarget.c目前是只读权限,文件修改不了,可以进到文件夹去修改权限,将STDOUT_CR_LF 和 STDERR_CR_LF 宏定义改成1 ,不然endl无法换行),int stdout_putchar (int ch)的实现就不讲解了;

 4)接下来就是c++程序的编写

…………

…………

至此,就可以愉快的用c++开发啦

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值