STM32
直播中

刘凤英

7年用户 158经验值
私信 关注
[问答]

中断初始化函数问题

void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)  
{
u32 temp;
u8 IPRADDR=NVIC_Channel/4;  //每组只能存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< else NVIC->ISER[1]|=1<<(NVIC_Channel-32);   
NVIC->IPR[IPRADDR]|=temp< }
各位高手帮忙解惑一下,上面三个语句想达到什么目的呢?

回帖(1)

张明

2019-6-17 11:33:24
关键在这句:NVIC->IPR[IPRADDR]|=temp< 前面的变换,就是为了使得数据格式符合寄存器的位定义格式.>
举报

更多回帖

发帖
×
20
完善资料,
赚取积分