c - 具有多个中断标志的硬件模块 (C)
问题描述
我们目前正在使用嵌入式微控制器(i.MX 7Dual Processors)。对于这个处理器,我们使用了一个名为 Flextimer (FTM) 的模块。这个模块为我们执行两个任务:
- 16 位定时器
- 脉冲检测
通过中断检测脉冲检测,然后在 ISR 中处理该中断。同时,模块 FTM 正在增加定时器。定时器肯定会溢出,所以处理器也有中断通知溢出。由于它是同一个模块,因此调用了相同的 ISR...计时器用于计算检测到的脉冲数。不幸的是,有时溢出发生在我们读取定时器值的同时,而我们仍在计算脉冲检测。结果是读取定时器的一个小值而没有可能被标记为溢出。
16 位定时器是有限制的,因为它经常触发,但我们别无选择。我试图找到一种方法来处理这两个标志,但无法弄清楚。无论如何,C 中是否有处理两个标志?
另外,由于这个处理器不处理中断优先级,我不确定另一个定时器的实现是否真的能解决这个问题。是否唯一的解决方案是更长的计时器以防止频繁溢出?
解决方案
推荐阅读
- python - 从单个列中删除异常值
- r - 如何逐行读取表格 - 使用 R?
- r - 使用 dplyr 分组时的 rlang::last_error()
- python - lxml-4.3.3-cp35-cp35m-win32.whl 不是这个平台支持的轮子
- pari - 如何确定哪些数字在某个范围内
- vector - pytorch中的向量乘法
- solr - 外部 Zookeeper 如何跨多个实例分布集合?
- jenkins - 如何在 Jenkins 上从 SVN 进行稀疏结帐和更新?
- windows - 通过 NSIS Envar-plugin 设置环境变量
- here-api - 如何通过 API 向 Here Maps 添加新地点?