简而言之:我有一个指向另一个函数(function_A)的函数(function_ISR),我想知道是否有可能,或者建议更改function_ISR,使其在function_A时指向function_B。
更长的时间:我正在将pic微控制器编程为步进控制器/驱动器,并试图加快/简化ISR,该ISR计算出下一步的间隔并决定下一步要做什么。目前,我将其作为状态机使用,其中的状态是稳态,加速,减速,change_direction。ISR的峰值运行频率约为40KHz,尽管状态很少改变,但它花费了一些时间通过状态机。此外,我知道最后一个状态的末尾的下一个状态。
因此,我正在考虑为每个状态编写单独的函数,并仅在需要时从上一个状态更改ISR指向的内容。我不确定从函数返回时是否会导致错误,我想问一下是否有人知道它是否原则上可行,是否有图片捕捉或建议其他方法。
最后我已经检查并发现C ++类似的线程/问题的问题,我不知道是否如果您发现链接感谢一个更好的请回复它是正确的C.
中断向量只是存储器中包含中断服务程序(ISR)地址的位置。您可以在ISR中进行更改,只要此更改相对于相应的硬件中断而言是原子性的即可。您必须禁用中断或屏蔽适当的中断,或者使用使更改自动发生的指令。根据具体的体系结构,ISR可能会屏蔽相应的中断,直到显式取消屏蔽为止。在此期间更改向量就像设置全局变量一样简单。
参考中的C ++问题并不完全相关,但我的回答适用于任何编译语言。汇编OTOH可让您明确使用特殊说明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句