打印
[应用相关]

使用C++封装库在MDK上建STM32开发工程

[复制链接]
1196|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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++?
这么牛

使用特权

评论回复
5
小灵通2018| | 2018-9-6 21:42 | 只看该作者
默认的可以直接用C++吗

使用特权

评论回复
6
chenqiang10| | 2018-9-6 22:52 | 只看该作者
不是STM32支持C++ 而是MDK支持C++编译

使用特权

评论回复
7
chenqiang10| | 2018-9-6 22:53 | 只看该作者
封装好了就可以调用了

使用特权

评论回复
8
chenqiang10| | 2018-9-6 22:53 | 只看该作者
类似C 封装的 printf   一些字符串的比较等等

使用特权

评论回复
9
xiaoqizi| | 2018-9-7 12:06 | 只看该作者
木木guainv 发表于 2018-9-5 12:17
这个看起来和C也没啥区别啊

恩 但是更多的代码就不知道了

使用特权

评论回复
10
pq113_6| | 2018-9-26 09:38 | 只看该作者
程序复杂后效果如何?如果是只有几K的RAM的话,用C++ RAM分配有没有问题?我这写复杂一点的,用C的函数指针都会飞掉

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

4122

帖子

1

粉丝