请教大家几个问题,现在我的程序中需要监测40个传感器信号。我用了40个外部中断来监测。我的问题是:
1: 这么多中断,我该怎么配置其的NVIC?我的想法是配置NVIC_PriorityGroupConfig(NVIC_ProiorityGroup_0),没有抢占优先级,16个子优先级。
然后让四十个中断的子优先级都为相同,即都为0这样做行不行?
2:书上说“同一时刻的EXTIx,只能响应一个端口的事件触发,不能同一时间响应所有的GPIO端口事件,但可以分时复用”。请问这里的“分时复用”是什么意思?
比如现在PA15,PC15 , PD15 ,PG15这四个在EXTI15上的中断。现在这4个中断事件同时到达,而且优先级相同。根据上面所说,此时只能响应一个中断,那么谁
会被优先处理?分时复用是否就是第一个中断响应后进入void EXTI15_10_IRQHandler(void),处理完后单片机还会自动进入void EXTI15_10_IRQHandler(void)三次?
3:这4个中断触发会点亮 4个LED.那么我该怎样判断此时是哪个中断被触发了?,现在这4个IO平时为高,设置为下降沿中断触发。能不能像下面这样写
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line15)!= RESET)
{
if(PAIN(15) == 0 )
{
LED0(ON);
}
if(PCIN(15) == 0 )
{
LED1(ON);
}
if(PCIN(15) == 0 )
{
LED2(ON);
}
if(PCIN(15) == 0 )
{
LED3(ON);
}
EXTI_ClearITPendingBit(EXTI_Line15);
}
}
|