Apnote“
Achieving 32-bit timer resolution with software expansion ”(AN2592)提到仅用一个 16 位定时器就可以创建 32 位输入捕获。结合来自更新事件的中断以计数定时器溢出和常规 16 位输入捕获到 32 位值。
Appnote 不处理读取捕获值和更新事件之间的竞争条件。如果捕获事件在更新事件之前或之后发生了几个周期,程序会检测到两个标志都被提升并且必须找出首先发生的事情。
我建议添加程序如何管理提到的竞争条件,因为如果没有它,建议的解决方案是无用的。
3.2节
中断处理听起来不对。表示如果同时调用两个 IRQ(捕获和更新事件),则程序应始终首先服务更新事件。如果捕获发生在更新事件之前很短的时间内,这会导致错误的结果......