请问这种情况该怎么去解决?

2019-07-18 14:51发布

用232进行通信;当外接串口的电压稳定时,通讯正常;当串口电压波动(如电脑串口断电)时,单片机就容易死机
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
wuhany
1楼-- · 2019-07-19 23:00
串口隔离办法
单片面的TTL里加光藕,再接上232电平转换器上,如果还不知道,来信号
jiajs
2楼-- · 2019-07-20 04:02
没这么脆弱,绝大多数情况下是软件的BUG所致
jiajs
3楼-- · 2019-07-20 04:26
串口在收到非法数据时内部的对应出错标志会被置1,此时暂停接收新数据,需要用软件进行查询和清零,DATASHEET里有详细说明。
jiajs
4楼-- · 2019-07-20 08:14
正确的串口接收中断处理函数
rx_handler(void)
{
    int b;
    if (OERR || FERR){
        SPEN=0;
        CREN = 0;
        b = RCREG;
        CREN = 1;
        SPEN=1;
    }
    else if (RCIF){
        get_data();
    }
}
wuhany
5楼-- · 2019-07-20 13:19
 精彩回答 2  元偷偷看……
jiajs
6楼-- · 2019-07-20 18:14
98%的可能是软件有问题
完善的做法是:当出现错误通讯数据的时候,程序要能退出该通讯处理,并照常处理其他数据,当新的通讯数据再次到来的时候要能正确响应。

LZ目前情况应该是程序不能处理掉错误的通讯数据导致等待而不能动弹.

一周热门 更多>