NVIC 函数如何工作 NVIC_EnableIRQ(CAN1_RX0_IRQn);

How NVIC function working NVIC_EnableIRQ(CAN1_RX0_IRQn);

所以我的朋友让我为上面的函数编写自己的实现 NVIC_Enable_IRQ(CAN1_RX0_IRQn);启用 can 接收中断。

最初我认为不可能纠正这样的实施..

谁能给我解释一下,比如与 NVIC 相关的寄存器,我直接去那里更改所需的值,这样就不需要实现上述功能并且启用了 CAN 接收中断。

这一行NVIC_EnableIRQ(CAN1_RX0_IRQn);我从stm32f CAN示例代码中给出的示例代码复制而来[​​=13=]

以 NVIC_ 开头的所有内容都是 ARM 提供的 CMSIS 库的一部分,用于设置 ARM 内核(独立于 MCU 制造商)。你真的不想惹他们,所以你最好使用它们。

在 CMSIS core_cm4.h(对于皮质 M4)中,您可以找到:

__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
{
  NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
}

现在,如果你不想调用 NVIC_EnableIRQ 或者你不想使用 CMSIS,祝你好运,你需要阅读 ARM 核心文档来检查你需要哪些地址修改。可以在 ARM 或 Keil 网站上找到 ARM 核心文档。例如,您可能会发现这些链接对 Cortex M4 有用:

https://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php http://www.keil.com/dd/docs/datashts/arm/cortex_m4/r0p1/dui0553a_cortex_m4_dgug.pdf