keil5为何有些函数函数放在while循环里面就不好使,方在主函数,非循环时就好使
1个回答
关注
展开全部
亲~Keil5之所以有些函数放在while循环里就不起作用,主要是函数中本身存在运行周期问题,某些函数本身具有周期性运行或是受外部脉冲触发的特性,如果函数写在while循环里,运行的周期受循环的本身的控制,从而使得函数实现失败。而把相同的函数放在主函数中,则可以通过把函数变量设置为全局变量来实现,因为函数的作用依然是接收到脉冲之后,进行相应的操作,只是其运行周期受主函数的控制,而不受while循环的控制了。
咨询记录 · 回答于2023-05-06
keil5为何有些函数函数放在while循环里面就不好使,方在主函数,非循环时就好使
亲~Keil5之所以有些函数放在while循环里就不起作用,主要是函数中本身存在运行周期问题,某些函数本身具有周期性运行或是受外部脉冲触发的特性,如果函数写在while循环里,运行的周期受循环的本身的控制,从而使得函数实现失败。而把相同的函数放在主函数中,则可以通过把函数变量设置为全局变量来实现,因为函数的作用依然是接收到脉冲之后,进行相应的操作,只是其运行周期受主函数的控制,而不受while循环的控制了。
此外,循环体中执行的函数程序会影响性能,即使函数能正确运行,循环体中函数程序执行会增加程序耗时,这样会影响系统的整体性能。因此,实时系统的程序分为主函数和循环体,只有影响系统实时性要求较低的代码可以放在循环体中执行,其他更重要的程序应该放在主函数里执行来保证实时性要求。
函数 void sim900_message(char*a,char*b)怎么在keil5中的主函数中进行初始化
亲~要在Keil5中的主函数中对函数void sim900_message(char*a,char*b)进行初始化,你可以使用以下方法:首先,你需要为这两个变量定义一些可用的内存空间,比如:char a[SIZE1], b[SIZE2];其中SIZE1和SIZE2是适当的长度。接下来,你就可以定义一个函数指针来指向该函数,如:void(*sim900_message_ptr)(char*, char*);sim900_message_ptr = sim900_message;最后,你就可以在主函数中调用这个函数指针:sim900_message_ptr(a,b);
在调用函数指针的过程中可能会涉及到更多的操作,比如将这个函数指针作为一个参数传递给另一个函数,并由另一个函数来调用。更多的细节可以参考C/C++的技术文档。