关于初始化函数MY_NVIC_Init

2019-10-11 14:24发布

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<<NVIC_Channel;//使能中断位(要清除的话,相反操作就OK) else NVIC->ISER[1]|=1<<(NVIC_Channel-32);     NVIC->IPR[IPRADDR]|=temp<<IPROFFSET;//设置响应优先级和抢断优先级            }

下面是调用它的函数
void WWDG_Init(u8 tr,u8 wr,u8 fprer) {   RCC->APB1ENR|=1<<11; //使能wwdg时钟 WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.    WWDG->CFR|=fprer<<7;    //PCLK1/4096再除2^fprer WWDG->CFR|=1<<9;        //使能提前唤醒中断 WWDG->CFR&=0XFF80;      WWDG->CFR|=wr;    //设定窗口值      WWDG->CR|=WWDG_CNT|(1<<7); //开启看门狗,设置7位计数器      MY_NVIC_Init(2,3,WWDG_IRQChannel,2);//抢占2,子优先级3,组2    }
MY_NVIC_Init第四个参数NVIC_Group是AIRC寄存器中的PRIGROUP位[10:8]么?如果是,那么实参给的是2,分配情况是4:0,即16个抢先式优先级,无子优先级,那MY_NVIC_Init的前两个参数怎么解释,新手菜鸟表示看晕了,求各位高手指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
任性的小娟娟
1楼-- · 2019-10-12 07:27
Error: L6218E: Undefined symbol MY_NVIC_Init (referred from usart.o).可以帮我看下这个问题么
笨鸟多飞
2楼-- · 2019-10-12 08:16
file:///C:/Users/T-MAX/Desktop/1490084540(1).jpg

一周热门 更多>