当前位置:   article > 正文

stm32 + freertos + c++混合编程方法_rtos 使用c++

rtos 使用c++

c++是面向对象编程,对于一些项目来说,c++编程更加合适!!

这里用stm32cubemax 配置FreeRTOS系统,芯片是F103

一、前面准备工作

stm32cubemax配置,这里就不写了,配置资料比较多。

二、keil配置

1、在Target 下的 MicroLIB 是不支持C++的。

2、配置工程编译时候是--c99,是因为工程里面FreeRTOS是c语言,c++模式会报错。

其他一些资料上面,c++配置成--cpp11或者-cpp 都是把工程配置成c++。在添加FreeRTOS时候是报错的。

我们这里是默认c,编写的c++文件,单独选择--cpp编译,这在后面配置!

三、添加cpp文件,我们调用cpp文件里面的接口函数,不需要修改main.c后缀名。只需要在xx.cpp

的头文件中,把接口函数或者全局变量 包含在#ifdef __cplusplus        extern "C" {        #endif

中。

1、下面就是#include "ledCPP.h"头文件

  1. #ifndef __LEDCPP_H
  2. #define __LEDCPP_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. void ledTask(void *argument);
  7. #ifdef __cplusplus
  8. }
  9. #endif
  10. #endif

2、ledCPP.cpp 源文件代码,这里创建一个led类,来点亮led

  1. /**************************************************************
  2. * c++编译方案
  3. *
  4. *
  5. ***************************************************************/
  6. #include "main.h"
  7. #include "ledCPP.h"
  8. #include "FreeRTOS.h"
  9. #include "task.h"
  10. class LED_Class
  11. {
  12. public:
  13. // LED_Class(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin)\
  14. // :GPIOx(GPIOx),GPIO_Pin(GPIO_Pin){};
  15. LED_Class(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin)
  16. {
  17. this->GPIOx = GPIOx;
  18. this->GPIO_Pin = GPIO_Pin;
  19. // MX_GPIO_Init();
  20. }
  21. void open()
  22. {
  23. HAL_GPIO_WritePin(GPIOx,GPIO_Pin,GPIO_PIN_RESET);
  24. }
  25. void close()
  26. {
  27. HAL_GPIO_WritePin(GPIOx,GPIO_Pin,GPIO_PIN_SET);
  28. }
  29. void tiggle()
  30. {
  31. HAL_GPIO_TogglePin(GPIOx, GPIO_Pin);
  32. }
  33. private:
  34. GPIO_TypeDef *GPIOx;
  35. uint16_t GPIO_Pin;
  36. };
  37. void ledTask(void *argument)
  38. {
  39. LED_Class led1(LED1_GPIO_Port,LED1_Pin);
  40. while (1)
  41. {
  42. led1.tiggle();
  43. vTaskDelay(1000);
  44. // HAL_Delay(100);
  45. }
  46. }

3配置CPP文件

这里就是让cpp文件在c++下编译

最后,编程成功,点亮!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/398033
推荐阅读
相关标签
  

闽ICP备14008679号