一种常见的单片机架构实现方式说明

#define num 3             //任务的数量,和func_x中形参数量需对应
typedef void (*p)(void);  //定义一个函数指针
void func_1(void);        //对你的任务1进行声明
void func_2(void);        //对你的任务2进行声明
void func_3(void);        //对你的任务3进行声明











/**********************************************************************************/
随着产品功能的升级,需要添加或者删除的功能越来越多。增加了代码维护的困难程度。
采用这种架构,将添/删功能写成一个API函数,并将形参中对应API函数的名字添加/删除即可。
/**********************************************************************************/
p func_x[num]=
{
/*************************/
//运行任务test1
/*************************/
func_1,


/*************************/
//运行任务test2
/*************************/
func_2,


/*************************/
//运行任务test3
/*************************/
func_3,

/*************************/
//添加api函数
/*************************/
//对应api函数名

};












/********************************/
//任务test1具体实现
/********************************/
void func_1(void)
{
printf("运行任务1");
}
/********************************/
//任务test2具体实现
/********************************/
 void func_2(void)
{
printf("运行任务2");
}
/********************************/
//任务test3具体实现
/********************************/
 void func_3(void)
{
printf("运行任务3");
}




/**********************************************************************************/
根据你的需要,对i的值进行不同赋值,从而实现对应任务的执行
/**********************************************************************************/

int  run_test (void)
{
	
	
	unsigned int i=0;
	
	/***************/
	
	
	//i=你的赋值;
	
	/*************/
	
	//执行对应任务,注意i<num 
	
    func_x[i]();
		   
}

猜你喜欢

转载自blog.csdn.net/m19930517/article/details/79962886
今日推荐