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
所以我的朋友让我为上面的函数编写自己的实现 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