打印
[STM32F1]

请求香主指点,关于串口引起的死机问题!

[复制链接]
1154|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangjiahao88|  楼主 | 2019-7-17 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好!
我们使用STM32F103RC制作了一批产品,有一个串口连接了一个第三方设备,发现在使用的过程中,会造成不定期的死机。
请问,这个问题可能性会出现在那里?定期的周期大约是3--5几个小时不等。。。

案例如下:
产品使用到了 UART1,UART2,UART4.
UART1:收发指令,解析PC端口的数据;
UART2,UART4:只发不收。但是第三方设备会主动向外发指令返回自己的工作状态。

UART1,2,4 配置如下:

    // 使能串口接收中断
    USART_ITConfig(UART1_USART,USART_IT_TC,DISABLE);  //关闭发送完成中断
    USART_ITConfig(UART1_USART,USART_IT_RXNE,ENABLE);  //关闭接收中断
    USART_ITConfig(UART1_USART,USART_IT_IDLE,ENABLE);//开启总线空闲中断
    // 使能串口
    USART_Cmd(UART1_USART, ENABLE);


有一个特殊的地方,是:
UART1接受到了PC指令,会根据数据协议格式改变UART2,4的波特率,更改波特率之后,继续发送UART1接收到的一些数据内容,通过UART2,UART4转发。
请问,在这种状况下,配置UART2,UART4,有什么特别的地方吗?
请指点迷津!

使用特权

评论回复
沙发
wangjiahao88|  楼主 | 2019-7-17 10:11 | 只看该作者
我在修改波特率的时候,只是重新把串口又初始化了一遍,包括配置中断。这样会有问题吗?

使用特权

评论回复
板凳
肥羊| | 2019-7-17 10:13 | 只看该作者
程序问题

使用特权

评论回复
地板
wangjiahao88|  楼主 | 2019-7-17 10:41 | 只看该作者

哦?您说是程序问题?是哪里的呢?是不应该全部初始化一遍吗?

使用特权

评论回复
5
香水城| | 2019-7-18 13:13 | 只看该作者
1、你确定死机源于串口通信吗?换言之,如果不做串口通信就不死机?
如果是,检查下跟串口通信有关的溢出中断、出错中断是否开启了,如果开启了,确认下相关中断标志能得到适时的处理。否则可能没完没了地进类似中断。

2、如果不做串口通信 还是死机,不妨检查下电源、BOOT脚地连接情况。

使用特权

评论回复
6
清风致影| | 2019-7-18 17:42 | 只看该作者
可重现的问题最好判断,先屏蔽一段程序,运行一段时间看看死机吗?如果没有,继续屏蔽下一段程序,否则就是该程序段有问题。

使用特权

评论回复
7
wangjiahao88|  楼主 | 2019-7-19 11:36 | 只看该作者
也对!你说的也对!

使用特权

评论回复
8
肥羊| | 2019-7-24 11:34 | 只看该作者
wangjiahao88 发表于 2019-7-17 10:41
哦?您说是程序问题?是哪里的呢?是不应该全部初始化一遍吗?

应该一直在中断里面有没出来,或者数组越界了,不过前面那种可能性大一点,

使用特权

评论回复
9
肥羊| | 2019-7-24 11:35 | 只看该作者
你可以用调试一下看一下死机的时候是不是在串口中断里面

使用特权

评论回复
10
wangjiahao88|  楼主 | 2019-7-24 12:24 | 只看该作者
这个……数组越界 从机只发不到十几个字节。。。我一直以为是AC220干扰引起的死机

使用特权

评论回复
11
guanjiaer| | 2019-8-9 11:38 | 只看该作者
重新初始化应该不会有问题啊

使用特权

评论回复
12
heimaojingzhang| | 2019-8-9 11:49 | 只看该作者
大概率程序问题

使用特权

评论回复
13
wangjiahao88|  楼主 | 2019-8-12 12:40 | 只看该作者
经过测试 发现的确是程序死机 最后将NVIC 搞到了初始化。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

473

主题

7517

帖子

29

粉丝