OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5142|回复: 11

STM32调试串口的时候卡在 B.

[复制链接]

20

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2018-9-11
在线时间
116 小时
发表于 2018-9-14 14:20:03 | 显示全部楼层 |阅读模式
10金钱
最近在调试代码的时候遇到一个问题,串口5接了一个测距仪,每隔20ms都会通过串口5上报数据,然后我再通过串口1发送出来。
当只使能串口1和串口5的时候,程序可以正常执行没有什么问题。
使能串口1,串口2,串口5的时候,程序可以正常运行。
使能串口1,串口3,串口5的时候,程序可以正常运行。
但是当同时使能串口2和串口3的时候(同时使能串口1,串口2,串口3,串口5),一开始数据可以正常上报,但是过了一段时间后,整个程序直接卡死在如图所示的地方。
同时使能串口2,串口3,串口5的时候,也同样会发生卡死的情况。
我估计是不是串口中断方面存在冲突导致的?
希望可以有大神帮我解答一下!
十分滴感谢!!
各个串口的接收中断函数我贴在下面。
1.png

串口1和5

串口1和5

串口3

串口3

串口2

串口2

最佳答案

查看完整内容[请看2#楼]

main函数就不应该结束
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164846
金钱
164846
注册时间
2010-12-1
在线时间
2098 小时
发表于 2018-9-14 14:20:04 | 显示全部楼层
ichmarcel 发表于 2018-9-17 14:32
原子哥,我想问下,main函数执行结束了是不是整个板子的运行就停止了。
int
main()

main函数就不应该结束
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2018-9-11
在线时间
116 小时
 楼主| 发表于 2018-9-14 14:25:43 | 显示全部楼层
各个串口的中断优先级配置我也贴出来!
5.png
6.png
7.png
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-9-14 18:39:12 | 显示全部楼层
帮顶
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164846
金钱
164846
注册时间
2010-12-1
在线时间
2098 小时
发表于 2018-9-15 01:13:38 | 显示全部楼层
估计八成是指针乱指/数组溢出。
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164846
金钱
164846
注册时间
2010-12-1
在线时间
2098 小时
发表于 2018-9-15 01:13:41 | 显示全部楼层
仿真找下问题
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164846
金钱
164846
注册时间
2010-12-1
在线时间
2098 小时
发表于 2018-9-15 01:13:58 | 显示全部楼层
仿真找下问题
回复

使用道具 举报

2

主题

760

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-9-15 08:36:16 | 显示全部楼层
其实和B.这个汇编指令没有太大问题,但是楼主要注意,卡住时候,是在HardFault_Handler这个硬错误中断处理函数中的。
如果楼主在这个函数中加上调试信息,那么当出现这种问题时,就可以看到相应的错误信息。

硬错误的产生一般和不正确的地址操作有关,包括但不限于错误指向的函数指针,数组溢出(可能性比较大),写了野指针所指向的内存单元等等。楼主可以仔细排查一些这些相关的部分。
十六进制带我飞。
回复

使用道具 举报

20

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2018-9-11
在线时间
116 小时
 楼主| 发表于 2018-9-17 14:32:00 | 显示全部楼层

原子哥,我想问下,main函数执行结束了是不是整个板子的运行就停止了。
int
main()
{
  BSPinit();
        uart1_init();
        uart5_init();

  delay_nms(30);
  printf("STM32F4Discovery Board initialization finished!\r\n");
}
类似于这样,我在main函数中配置好了串口,然后main函数结束,串口就不起作用了,是吗?
回复

使用道具 举报

9

主题

797

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2037
金钱
2037
注册时间
2017-8-2
在线时间
521 小时
发表于 2018-9-17 15:03:54 | 显示全部楼层
又是hardfault_handler..

你先在你的system里把堆栈改改大试试。

如果不行https://blog.csdn.net/electrocrazy/article/details/78173558
第二种方法  找到出错语句。
猪猪熊呢?
回复

使用道具 举报

26

主题

357

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2017-4-1
在线时间
432 小时
发表于 2018-9-18 11:35:19 | 显示全部楼层
mark一下,出现过类似的情况,找到问题没找到原因
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-6-26
在线时间
4 小时
发表于 2019-5-10 18:21:22 | 显示全部楼层
我这边碰到过,后来发现是开了中断,但是中断函数没写,或者没有清中断,就会出现这个问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-4-20 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表