新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2016-3-3
- 在线时间
- 3 小时
|
首先是设置外部中断0的中断优先级最高,之后进入该中断后,虽然XTI_ClearITPendingBit(EXTI_Line0);清除了中断标志位,但是下次还是会进入该中断,而且是进入到for循环那里,请问是为什么?
void EXTI0_IRQHandler(void)
{
volatile uint16_t cnt = 0; //
volatile static uint8_t circle = 0; //
volatile static uint16_t ADCH1cnt = 0; //
volatile static uint16_t ADCH2cnt = 9*1024*3; //
// volatile static uint16_t ADCH3cnt = 0; //
// volatile static uint16_t ADCH4cnt = 9*2048*3; //í
EXTI_ClearITPendingBit(EXTI_Line0);
for(cnt=0; cnt<1024; cnt++) //2048
{
while(EXTI_GetITStatus(EXTI_Line0) == RESET); //2
*(pADbuf+ADCH1cnt++) = ADSpiReadByte();
*(pADbuf+ADCH1cnt++) = ADSpiReadByte();
*(pADbuf+ADCH1cnt++) = ADSpiReadByte();
*(pADbuf+ADCH2cnt++) = ADSpiReadByte();
*(pADbuf+ADCH2cnt++) = ADSpiReadByte();
*(pADbuf+ADCH2cnt++) = ADSpiReadByte();
EXTI_ClearITPendingBit(EXTI_Line0);
}
if(++circle == 9)
{
circle=0; ADCH1cnt=0; ADCH2cnt=9*1024*3;
ADReadyFLG=1; ADWordStatus=0;
}
ADSetCircleCollecte(0); //ê§Äü
EXTI_ClearITPendingBit(EXTI_Line0);
}
|
|