写了个简单的短信操作单片机程序,在串口中断函数加入发送短信的代码后,程序跑死了

2019-10-15 21:46发布

按着理解写了个短信控制单片机的实验,但是效果并不好。在中断函数中加入发送短信的代码后,开机自动跑进中断函数里面就跑死了(发送短信执行到了)。如果没有加发送短信的代码,只控制LED灯开关,虽然开机还是会自动触发一次中断,但程序可以跑出来。
AT指令AT+CNMI=2,1是为了每次收到短信后,给单机发送一个收到新消息的数据触发串口中断,我实在想不到其他好的短信操作单片机的好方法。
这个实验我的最终目的是给单片机发一个短信,他给我回复我预设的内容,求各位大大帮我看看什么是问题

[mw_shl_code=c,true]int main(void)
{      
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init(168);                              
        LED_Init();                                                         
        usart3_init(115200);                                 
        delay_ms(200);
        u3_printf("AT+CNMI=2,1 ");
                delay_ms(100);
                u3_printf("AT+CMGS="GSM" ");
                delay_ms(100);
          u3_printf("AT+CMGF=1 ");
                delay_ms(100);
                u3_printf("AT+CMGS="15603001234" ");
                delay_ms(100);
                u3_printf("aaaa ");
                delay_ms(100);
                USART_SendData(USART3,0x1a);
                while(1)
        {
                LED0=!LED0;
                delay_ms(400);
        }
}[/mw_shl_code]

[mw_shl_code=c,true]void USART3_IRQHandler(void)
{         if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
        {        u3_printf("AT+CMGS="GSM" ");
                delay_ms(100);
          u3_printf("AT+CMGF=1 ");
                delay_ms(100);
                u3_printf("AT+CMGS="15603001234" ");
                delay_ms(100);
                u3_printf("bbbb ");
                delay_ms(100);
                USART_SendData(USART3,0x1a);       
    LED1=!LED1;}               
USART_ClearITPendingBit(USART3,USART_IT_RXNE);
}  [/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。