STM0.TIM0 是一个 32 位寄存器。 完整的 32 位值可以用一条指令读取。 当使用一条指令执行访问时,无需禁用 IRQ。
如果对 TimX 寄存器进行了多次访问(例如 TIM0 和 TIM6 以获得完整的 64 位值),禁用 IRQ 不会阻止计时器增加。 因此,在多次读取访问时,SW 需要处理向较高寄存器部分的潜在增量/增量。
可以这样做(伪代码)
uint32 high1, high2, low;do { high1 = TIM6; low = TIM0; high2 = TIM6;} while (high1 != high2);// "high1" together with "low" contain the 64-bit counter value.
STM0.TIM0 是一个 32 位寄存器。 完整的 32 位值可以用一条指令读取。 当使用一条指令执行访问时,无需禁用 IRQ。
如果对 TimX 寄存器进行了多次访问(例如 TIM0 和 TIM6 以获得完整的 64 位值),禁用 IRQ 不会阻止计时器增加。 因此,在多次读取访问时,SW 需要处理向较高寄存器部分的潜在增量/增量。
可以这样做(伪代码)
uint32 high1, high2, low;do { high1 = TIM6; low = TIM0; high2 = TIM6;} while (high1 != high2);// "high1" together with "low" contain the 64-bit counter value.
举报