mypear 发表于 2023-10-16 18:24:09

请教STM32中NVIC寄存器位移含义

查看NVIC_EnableIRQ函数原型,任意代入一个IRQn,
如: USART1_IRQn = 37,   /*!< USART1 global Interrupt */

__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));
}

后段:(uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL)); 不明,有没专家解惑。

yuyu87 发表于 2023-10-16 20:24:56

你看手册就能搞明白的啊。与0x1FUL与是为了保留位置0,避免超出范围了。只有32个中断

mypear 发表于 2023-10-17 10:14:48

yuyu87 发表于 2023-10-16 20:24
你看手册就能搞明白的啊。与0x1FUL与是为了保留位置0,避免超出范围了。只有32个中断 ...
(引用自2楼)

明白了,昨天头炸掉,思考卡死一点,后边位移错,一直对不上。。。。
页: [1]
查看完整版本: 请教STM32中NVIC寄存器位移含义