下面的操作是什么意思?

What is meant by the following operation?

我不明白嵌入式C中的以下操作是什么意思?

NVIC_ICPR |= 1 << (vector_number%32);

从参考手册中,我发现

但是为什么是模除以32呢?

它基本上是一个包含 32 位的寄存器。

这会删除一组 32 中一个或多个中断的挂起状态。每个位代表来自IRQ0 - IRQ31(Vector number from 16 - 47)的一个中断号。 写入 1 将移除挂起状态。写入 0 无效。

重要的一点是你应该像这样使用它

NVIC_ICPR |= 1U << (vector_number%32);

这确保这将是无符号整数算术 - 它使您免于 vector_number=31 时出现的 UB。 (chux 指出了这一点)。