在原子战舰板(STM32F103ZET)调试时,对NVIC的SPI2发送中断设置出现了一个奇怪的问题,调试时NVIC->ISER[1]|=1<<(NVIC_Channel-32);这个语句过不去,暂停后发现程序进入到delay_us()中去了,但是其他的中断设置没有这个问题,如TIM2的溢出中断,可以正确的启动中断,没有异常。哪位高人能帮我分析下吗?谢谢了
程序如下(因为是SPI2中断,NVIC_Channel为36,进入到else语句就死掉了):
void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)
{
u32 temp;
u8 IPRADDR=NVIC_Channel/4; //
u8 IPROFFSET=NVIC_Channel%4;//
IPROFFSET=IPROFFSET*8+4; //
MY_NVIC_PriorityGroupConfig(NVIC_Group);//
temp=NVIC_PreemptionPriority<<(4-NVIC_Group);
temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);
temp&=0xf;//
if(NVIC_Channel<32)
{
NVIC->ISER[0]|=1<<NVIC_Channel;//
}
else
{
NVIC->ISER[1]|=1<<(NVIC_Channel-32);
}
NVIC->IPR[IPRADDR]|=temp<<IPROFFSET;//
} |