STM32引入C++
freeRTOS使用V6编译器
C:\Users\johnson\STM32Cube\Repository\STM32Cube_FW_F1_V1.8.4\Middlewares\Third_Party\FreeRTOS\Source\portable
-
将GCC内的文件替换到RVDS,这样生成的代码的RVDS的文件就都是GCC里的 -
V6编辑器默认是不使用MicroLib的,所以不能勾选
V6编译器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ju0mEYWp-1648295635593)(C:\Users\87698\AppData\Roaming\Typora\typora-user-images\image-20220101133335906.png)]
可以选择C和C++的编译器版本
在C中使用C++
新建一个C++文件和一个.h文件
-
helloworld.cpp #include "helloworld.h"
#include "cmsis_os.h"
double Box::get(void)
{
return length * breadth * height;
}
void Box::set( double len, double bre, double hei)
{
length = len;
breadth = bre;
height = hei;
}
void LEDTASK(void *argument)
{
Box Box1;
Box1.height = 5.0;
Box1.length = 6.0;
Box1.breadth = 7.0;
double volume = 0.0;
volume = Box1.height * Box1.length * Box1.breadth;
for(;;)
{
osDelay(1);
}
}
-
helloworld.h #ifndef __HELLOWORLD_H
#define __HELLOWORLD_H
class Box
{
public:
double length;
double breadth;
double height;
double get(void);
void set( double len, double bre, double hei );
};
#ifdef __cplusplus
extern "C" {
#endif
void LEDTASK(void *argument);
#ifdef __cplusplus
}
#endif
#endif
-
在freertos中就不需要另外包含helloworld.h,因为在freertos声明了 extern void LEDTASK(void *argument);
所以编译器会自动找到这个声明,然后跳转到对应的函数
第二种方法
|