我想要在外部中断0程序中使用串口中断,请问如何写代码????
我的代码可以吗??????
int main(void)
{
while(1);
return 0;
}
//外部中断0
void INT0_Interrput(void) interrupt 0
{
EX0 = 0; //关中断
Init_Display3();
Delay1ms(1000);
Usart1_SendString("AT+CLIP=1\r\n");
Delay1ms(1000);
Receive_Count = 0;
memset( Usart_Receive, 0x00, sizeof(Usart_Receive) );
Init_Display4();
Init_Display3();
while(1)
{
Beep();
Gsm_CallInCheck();
}
EX0 = 1;//开中断
}
//串口中断
void Usart1_Interrupt(void) interrupt 4
{
if (RI)
{
RI = 0;
Usart_Receive[Receive_Count] = SBUF;
Receive_Count++;
if (Receive_Count >= BUF_SIZE)
{
Receive_Count = 0;
}
}
}
------解决方案--------------------
不能这样使用 可以在外部中断设置一个变量来控制串口操作
------解决方案--------------------
不能这样做,建议加标志位来控制,还有,不要老想着在中断里面用延时,1ms也不行
------解决方案--------------------
把串口中断优先级设置成高于外部中断 就可以形成中断嵌套了吧
自己没写过 但是如果我第一次写我会这么尝试……
------解决方案--------------------
中断里面不能干太多的活 建议象楼上几位的那样在中断里设置标志 在主程序里做实际的事