所以我的朋友让我为上面的函数NVIC_Enable_IRQ(CAN1_RX0_IRQn)编写我自己的实现;启用可以接收中断。
最初我认为这样的实施是不可能的..
任何人都可以解释我像NVIC相关的寄存器,我直接去更改所需的值,这样就不需要实现上述功能,并启用CAN接收中断。
此行NVIC_EnableIRQ(CAN1_RX0_IRQn);
我是从CAN
答案 0 :(得分:3)
以NVIC_开头的所有内容都是ARM提供的CMSIS库的一部分,用于设置ARM内核(独立于MCU制造商)。你真的不想搞砸它们,所以你最好使用它们。
在CMSIS core_cm4.h(对于cortex 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核心文档可以在ARM或Keil网站上找到。例如,您可能会发现这些链接对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