首页 > 解决方案 > 具有多个中断标志的硬件模块 (C)

问题描述

我们目前正在使用嵌入式微控制器(i.MX 7Dual Processors)。对于这个处理器,我们使用了一个名为 Flextimer (FTM) 的模块。这个模块为我们执行两个任务:

  1. 16 位定时器
  2. 脉冲检测

通过中断检测脉冲检测,然后在 ISR 中处理该中断。同时,模块 FTM 正在增加定时器。定时器肯定会溢出,所以处理器也有中断通知溢出。由于它是同一个模块,因此调用了相同的 ISR...计时器用于计算检测到的脉冲数。不幸的是,有时溢出发生在我们读取定时器值的同时,而我们仍在计算脉冲检测。结果是读取定时器的一个小值而没有可能被标记为溢出。

16 位定时器是有限制的,因为它经常触发,但我们别无选择。我试图找到一种方法来处理这两个标志,但无法弄清楚。无论如何,C 中是否有处理两个标志?

另外,由于这个处理器不处理中断优先级,我不确定另一个定时器的实现是否真的能解决这个问题。是否唯一的解决方案是更长的计时器以防止频繁溢出?

标签: cembeddedsysteminterrupt

解决方案


推荐阅读