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

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]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
a360513112
1楼-- · 2019-10-15 21:48
 精彩回答 2  元偷偷看……
a360513112
2楼-- · 2019-10-15 23:15
mrxsean 发表于 2016-12-17 14:11
串口开中断接收模块的数据,判断到有新短信来后,发送命令去读短信。然后再解析,解析完后根据短信内容回复 ...

我按着你的数据写了程序,但是程序还是无法判断我的发送的内容,可以帮我看看吗
正点原子
3楼-- · 2019-10-16 03:59
帮顶

一周热门 更多>