STM32中C编程引入C++程序

时间:2024-04-09 11:46:48

C++具备类的创建思想很实用于实际场景多相似性的框架搭建;同种类型或相似类型的C++的优势明显因此进行相互嵌套使用

需要在C中使用C++类的话,你可以通过C++的“extern "C"”语法来实现。这允许你在C++代码中使用C的链接方式,而在C代码中使用C++的特性。

standard.cpp

#include "FB_Standard_TON.h"
#include "math.h"

Class_FB_Standard_TON::Class_FB_Standard_TON()//¹¹Ô캯Êý--¿ÉÒÔ½øÐÐÓвÎÊýµÄÖØÔØ--->ÎÞ·µ»ØÀàÐÍ
{
	;
}
Class_FB_Standard_TON::~Class_FB_Standard_TON()//Îö¹¹º¯Êý
{
	;
}

/***************·½·¨****************/
void Class_FB_Standard_TON::TON(u32 system_time_num,u16 PT_time,bool* IN,bool* out_Q)//¹¹Ô캯Êý--¿ÉÒÔ½øÐÐÓвÎÊýµÄÖØÔØ--->ÎÞ·µ»ØÀàÐÍ
{
	if((IN_old == false)&&(*IN == true)) {ton_step  =100;star_time = system_time_num;}
	if(*IN == false) {ton_step  =1000;*out_Q=0;}
	switch(ton_step)
	{
		case 100:
		if ((system_time_num-star_time)>=PT_time)//²»ÓùØÐÄÒç³ö
			*out_Q = 1;
		break;
		default:
			*out_Q = 0;
			break;
	}
	IN_old = *IN;
}





 standard.h

#ifndef __FB_STANDARD_TON__
#define __FB_STANDARD_TON__

#include "applicfg.h"
#include "ObjDict.h"
#include <math.h>
#include "sys.h"


extern "C" void FB_Standard_TON_LIB(u32 system_time_num,u16 PT_time,bool* IN,bool* out_Q);//CÓëC++µÄÖм䴫µÝº¯Êý--->Ò²³ÆΪ¼æÈݺ¯Êý

class Class_FB_Standard_TON{
	public:
		int ton_step;
		bool IN_old;
		u32 star_time;
		Class_FB_Standard_TON(void);//¹¹Ô캯Êý
		~Class_FB_Standard_TON(void);//Îö¹¹º¯Êý
		void TON(u32 system_time_num,u16 PT_time,bool* IN,bool* out_Q);
};

Class_FB_Standard_TON FB_Standard_TON;//ʵÀý»¯Àà

void FB_Standard_TON_LIB(u32 system_time_num,u16 PT_time,bool* IN,bool* out_Q)//º¯ÊýÉùÃ÷
{
	FB_Standard_TON.TON(system_time_num,PT_time,IN,out_Q);//ÀàµÄ·½·¨µ÷ÓÃ
}



#endif


C语言函数的调用

main.c

extern void FB_Standard_TON_LIB(u32 system_time_num,u16 PT_time,bool* IN,bool* out_Q);

void test_ton()
{
	bool in,Q;
	FB_Standard_TON_LIB(SysTick->VAL,1000,&in,&Q);
}