[应用相关] 使用C++封装库在MDK上建STM32开发工程

[复制链接]
 楼主| wowu 发表于 2018-9-5 12:05 | 显示全部楼层 |阅读模式
本帖最后由 wowu 于 2018-9-5 12:09 编辑

  • 直接上一些片上硬件、一些常用器件的封装库GitHub链接:
    STM32F4:https://github.com/InfiniteYuan1/STM32F407DriverLib
    STM32F1:https://github.com/InfiniteYuan1/STM32f103DriverLib

    用C++进行嵌入式程序开发,甚至是裸系统程序。开发起来比C语言更方便架构搭建与程序管理。


    • 简单的一个例子使用USART
        #include "USART.h"
    USART com(1,115200);
  • void main()
  • {  
  •   com<<"test string\r\n";
  •    while(1)   
  • {   
  • }
  • }



  • 使用片外资源的一个例子



    #include "USART.h"
#include "DPPrint.h"int main(void)
{   
USART com(USART1, 115200);   
DPPrint DP(com);   
DP.InitializePrint();   
DP.PrintPageStart(0,0,384,640,0);   
DP.rectangleDraw(0,0,384,576,5,1);   
while(1)  
  {


   }
}





extern "C"
{   
void USART1_IRQHandler(void)    //----USART1 IRQ----//   
{   
#ifdef USE_GPS      
if(pGPS1)
{      
     pGPS1->GPS_IRQHandler();           
return ;      
}   
#endif   
#ifdef USE_USART1      
pCOM1->IRQ();   
#endif   
#ifdef USE_USART1_DMA        
pCOM1->IRQ();   
#endif   
}
}


  • 首先声明,这个main()所在的文件必须是以.cpp文件,不然编译当成C语言进行编译。C++可以调用C,C不能调用C++,这点要记住。
  • extern “C” { } 用于告诉编译器,大括号以内的东西以C的方式进行编译。因为原来.C的头文件被.CPP文件包含了,那么编译器便按C++的方式进行编译,导致与原来.C文件中定义的不一致,编译报错。


xiaoqizi 发表于 2018-9-5 12:13 | 显示全部楼层
有没有C的啊
木木guainv 发表于 2018-9-5 12:17 | 显示全部楼层

这个看起来和C也没啥区别啊
捉虫天师 发表于 2018-9-6 20:50 | 显示全部楼层
STM32开发还支持C++?
这么牛
小灵通2018 发表于 2018-9-6 21:42 | 显示全部楼层
默认的可以直接用C++吗
chenqiang10 发表于 2018-9-6 22:52 | 显示全部楼层
不是STM32支持C++ 而是MDK支持C++编译
chenqiang10 发表于 2018-9-6 22:53 | 显示全部楼层
封装好了就可以调用了
chenqiang10 发表于 2018-9-6 22:53 | 显示全部楼层
类似C 封装的 printf   一些字符串的比较等等
xiaoqizi 发表于 2018-9-7 12:06 | 显示全部楼层
木木guainv 发表于 2018-9-5 12:17
这个看起来和C也没啥区别啊

恩 但是更多的代码就不知道了
pq113_6 发表于 2018-9-26 09:38 | 显示全部楼层
程序复杂后效果如何?如果是只有几K的RAM的话,用C++ RAM分配有没有问题?我这写复杂一点的,用C的函数指针都会飞掉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

128

主题

4316

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部