这实际上是嵌入式系统中固件的设计问题
我有两个独立执行的 ISR(具有相同优先级)。
当硬件生成数据时,这些 ISR 被触发。
我想要一种必须到位的机制来在任务 1 和任务 2 之间进行同步。任务 2 必须知道任务 1 中计算的某些值,然后在计算任务 2 中的某些值时必须考虑这些值。
我没有可用的操作系统原语,即系统没有任何操作系统。
任务 1 在 ISR1 的上下文中执行,任务 2 在 ISR2 的上下文中执行。
我们使用的处理器是 STMicroElectronics 32 控制器
编辑:附加信息
处理器连接到某些 IP,这些 IP 在准备好数据时会触发中断。这些 IP 充当输入流帧数据上的累加器类型。
我不会在中断上下文中进行繁重的处理,只需读取数据并设置一个标志。
然后可以在主循环中的简单调度程序中检查标志,以根据需要执行任务。因此任务不能互相中断,也看不到另一个任务不一致的输出。
任务还可以设置这样的标志来激活另一个任务。例如。任务 1 可以激活任务 2,因为任务 2 需要来自任务 1 的值。
对于在 ISR 中读取的数据,您需要一些缓冲区。根据传入数据的时间,可能是环形缓冲区或双缓冲区。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)