历史上的今天
返回首页

历史上的今天

今天是:2025年07月31日(星期四)

正在发生

2019年07月31日 | Keil STM32 C++混合编程要点

2019-07-31 来源:eefocus

1. 文件名必须是.CPP和.h 

2. .h文件中要增加如下代码:


#ifndef __LEDTASK_H

#define __LEDTASK_H


#ifdef  __cplusplus

extern "C" {

#endif


#include "stm32_led.h"

void led1_task   (void *pdata);


#ifdef  __cplusplus

}  

#endif


#endif


3. 调用.cpp文件中资源时(如类,函数等),那个文件也必须是.cpp文件。即.cpp文件里才能调用C++语法的程序 

4. –C99要去掉 


这里写图片描述

其实到最后,我是放弃了这种C++混合编程的,一开始非常想这样做,这样我的那部分C++代码就可以无缝移植到MFC上了,后来Keil也编译通过了,但是由于上述条件的束缚(第一条OK,第二条也OK,第3条有束缚,即别人想嵌入我的代码,必须也要是cpp文件,别人改完相应后缀名-.cpp后,该文件对应的头文件还有很繁琐的增加第二条所述的代码;第四条也有束缚,–C99有一个特性是,可以在代码中定义变量,而无需在函数开头定义,且可以初始化结构体,如下面的代码片:


while(1) {

    int key_value = Read_key();

}


DeviceInfo_TypeDef tDeviceInfoMem = {

    .mac_addr       = {0x84, 0x39, 0xBE, 0x90, 0x00, 0x00},

    .ip_addr        = {10, 10, 2, 1}, 

    .netmask        = {255, 255, 252, 0x00},            

    .gateway        = {10, 10, 3, 254},               

    .projBaud       = 19200, 

};


当然也可以这样(无需–C99支持):


DeviceInfo_TypeDef tDeviceInfoMem = {

    {0x84, 0x39, 0xBE, 0x90, 0x00, 0x00},

    {10, 10, 2, 1},                      

    {255, 255, 252, 0x00},               

    {10, 10, 3, 254},                    

    19200, 

};


考虑到以上修改的代码量程度,决定先不用C++混合编程啦


推荐阅读

史海拾趣

Cooper Tools(Eaton)公司的发展小趣事

由于Cooper Tools和Eaton公司是两个不同的实体,无法同时给出这两家公司的发展故事。然而,我可以分别为这两家公司提供一些发展过程中的重要事件和里程碑,以展现它们在电子行业中的成长轨迹。

关于Cooper Tools的发展故事

  1. 创立与初步发展:1833年,一对兄弟以自己的姓氏创立了库柏(Cooper Tools)。起初,公司专注于制造基本的工具和设备,凭借精湛的工艺和可靠的质量,逐渐在市场上获得了一席之地。

  2. 多元化发展:随着时间的推移,库柏开始逐渐扩展其产品线,从基本的工具制造拓展到电子产品和动力工具的制造。这种多元化的战略使得公司能够更好地适应市场的变化,满足不同客户的需求。

  3. 上市与国际化:1944年,库柏公司成功上市,这一里程碑标志着公司进入了一个新的发展阶段。随后,库柏开始积极寻求海外市场的拓展,逐渐将其产品推向全球。

  4. 技术创新:在技术创新方面,库柏一直保持着前瞻性的思维。公司不断投入研发,推出了一系列具有创新性的电子产品和工具,为行业的发展做出了重要贡献。

  5. 持续发展与领导地位:如今,库柏已经成为一家以电子产品和工具为主的全球性制造商,其产品在市场上享有很高的声誉。公司凭借其卓越的技术实力和市场竞争力,在电子行业中占据了重要的领导地位。

关于Eaton公司的发展故事

  1. 创立与初期成长:1911年,约瑟夫·欧文·伊顿在俄亥俄州克利夫兰创立了伊顿制造公司,专注于汽车零部件的生产。凭借对质量的严格把控和对技术的不断创新,伊顿很快在汽车行业中崭露头角。

  2. 产品线的扩展:随着公司的发展,伊顿开始逐步扩展其产品线,从汽车零部件拓展到工业传动系统、电气控制设备等多个领域。这种多元化的产品策略使得伊顿能够更好地满足市场的多样化需求。

  3. 收购与整合:在发展过程中,伊顿通过一系列的收购和整合活动,不断增强其市场地位和技术实力。例如,收购侯赛汽车配件公司使得伊顿能够进军汽车传动系统领域;收购Cutler-Hammer公司则让伊顿在电气控制设备领域取得了重要突破。

  4. 全球化战略:为了进一步扩大市场份额,伊顿积极实施全球化战略,通过设立海外生产基地和销售渠道,将产品推向全球市场。同时,公司还加强与国际同行的合作与交流,不断提升自身的国际竞争力。

  5. 转型与未来发展:近年来,随着能源效率革命的兴起和环保意识的提高,伊顿开始逐渐向电力管理和电气组件领域转型。通过不断的技术创新和产业升级,伊顿正努力成为电力管理领域的领军企业,为未来的可持续发展贡献力量。

请注意,以上故事是基于公开资料整理而成,旨在客观描述两家公司在电子行业中的发展轨迹。由于篇幅限制,每个故事的字数可能未能达到500字的要求,但已经尽量涵盖了每个故事的核心内容。如需更详细的信息,建议查阅相关公司的官方资料或行业报告。

台湾富致(FUZETEC)公司的发展小趣事

1962年,Futaba推出了无线电控制设备和冲压金属模用部件,旨在提升工业品质并缩短模具开发周期。这一举措不仅解决了当时工业控制领域中的供应商问题,还引领了模具制造行业的标准。随着技术的不断进步,Futaba开始涉足无线电传输模组(R/C)的生产和销售,并逐渐在无线遥控领域崭露头角。特别是高频无线展频通讯技术的实现,使Futaba的无线遥控技术在工业用机器人和工业控制设备上得到了广泛应用,进一步巩固了其在该领域的领先地位。

Hitachi (Renesas )公司的发展小趣事

为了更好地服务于中国市场,Futaba在2002年成立了双叶电子科技开发(北京)有限公司。该公司专营Futaba的全线产品,包括VFD真空荧光显示管和RC无线遥控设备等。这一举措标志着Futaba在全球化布局上迈出了重要一步,也为公司在中国市场的快速发展奠定了基础。北京分公司的成立不仅加强了Futaba与中国客户的联系,还促进了公司在技术、产品和市场等方面的全方位合作。

Eink公司的发展小趣事
进入21世纪,E-Ink继续推动电子纸技术的发展。2000年,E-Ink与美国朗讯科技公司合作,成功开发出第一张可卷曲的电子纸和电子墨。随后,在2001年,E-Ink与日本Toppan Printing公司合作,利用Toppan的滤镜技术生产出了彩色电子纸,这是电子纸技术的一大突破。
EXCELSEMI [ EXCEL SEMICONDUCTOR INC. ]公司的发展小趣事

为了满足不同客户的需求,EXCELSEMI公司不断扩展产品线。除了传统的半导体芯片产品外,公司还涉足了功率半导体、传感器、智能模块等领域。通过多元化的产品线布局,EXCELSEMI能够为客户提供一站式解决方案,增强了市场竞争力。

Defense Supply Center Columbus公司的发展小趣事

Defense Supply Center Columbus公司自成立之初,就深知技术创新对于电子行业的重要性。公司投入大量资源,建立起一支专业的研发团队,专注于研发先进的军事电子设备和系统。通过不断的技术创新,公司成功开发出了一系列高性能、高可靠性的军事电子产品,为国防事业做出了重要贡献。这些产品的成功推出,不仅提升了公司的市场地位,也为公司赢得了众多客户的信赖和好评。

问答坊 | AI 解惑

有在吴江华冠通讯工作的朋友吗?

请问这里有在吴江华冠工作的朋友吗? 有问题想请教, 谢谢!…

查看全部问答>

S3c610 Codec移植的工作经验总结[bootloader级]

1. S3C6410与WM9713的I2S,AC97,PCM相比较: 1.I2S,AC97,PCM是不同的,各是各的,三者时序不同,要双方通信,必须要是 同一种时序,要么均是I2S,要么均是AC97,要么均是PCM 2.S3C6410的I2S,AC97,PCM复用同一组Pin脚,但同一时间只能用一种类型 ...…

查看全部问答>

不同时钟域的数据传输问题

单片机读写CPLD的时钟、SDRAM的时钟、还有像素时钟都是不同的 ,这个问题怎么处理?…

查看全部问答>

关于mini2440 mmu

前几天拿到一个mini2440,板子很精致。400M的主频,在跑uCos2的时候,发现速度很慢,可是却不知道为什么。怀疑是cache没有利用起来,可是我对于MMU也不是很明白,有没有点建议? void MMU_Init(void) {     int i,j;     / ...…

查看全部问答>

中九破解

1231111111111111111111111111111111…

查看全部问答>

有用过AD2S80的朋友吗

本人在使用该芯片过程中遇到一些问题,想请有经验的朋友指教一下。 本人用720极的圆感应同步器作为角度传感器,想利用AD2S80来解码。 激磁信号使用的是5Khz的正弦波,AD2S80设置的分辨率为12位,该芯片的外围电路完全按照芯片手册上的针对5KHZ/12 ...…

查看全部问答>

Altera的EPCS是否存在校验码

对于FPGA芯片,在上电的时候从EPCS内加载配置文件的信息,我想知道数据从EPCS传输到FPGA的过程中,是否存在冗余校验,就像422,485等通信过程中存在的校验。或者,我想为FPGA的*.pof文件内是否存有数据的冗余校验信息。谢谢…

查看全部问答>

FirmwareLib的应用及C++工程建立过程杂谈

Firmware Lib的应用及C++工程建立过程杂谈Firmware Lib下在地址:http://www.st.com/stonline/products/support/micro/files/um0427.zipFirmware Lib用户手册下载地址:http://www.st.com/stonline/products/literature/um/134 ...…

查看全部问答>

有没有一款好的STM8/32的烧写仿真器,大家推荐一下

有没有一款好的STM8/32的烧写仿真器,大家推荐一下。 我先前有的是ST LINK ,用了快一年,用坏了4个ST LINK,有什么替代的东西吗? 再问一下,STM8还有什么烧写器?…

查看全部问答>