硬汉嵌入式论坛

 找回密码
 立即注册
查看: 561|回复: 4
收起左侧

[有问必答] 在中断里发送超过缓存区的数据时卡死

[复制链接]

8

主题

19

回帖

43

积分

新手上路

积分
43
发表于 2023-5-8 18:54:21 | 显示全部楼层 |阅读模式


卡死状态和寄存器如图

我在调试CANopen的时候开了串口,由于我在执行过程中打印了过多的信息,结果发送缓存区一旦满了就卡死,后面测试发现有可能是中断的问题,请问有什么办法可以解决吗?

注:定时器和串口的抢占优先级和从优先级都尝试过对调,未能解决
回复

使用道具 举报

8

主题

19

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2023-5-8 18:56:35 | 显示全部楼层
微信截图_20230508185615.png
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2023-5-15 17:32:34 | 显示全部楼层
会不会是你的程序有些问题,导致缓存区溢出了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2023-5-16 00:39:08 | 显示全部楼层
这个问题,我在你年初的帖子里面回复过

标准库bsp_uart_fifo.c里面串口发送函数UartSend修正完善
https://www.armbbs.cn/forum.php?mod=viewthread&tid=95694

我们这个是串口FIFO中断的玩法,只要你的串口中断有执行机会,是不会卡死在这里,卡在这里说明程序在一直等待有发缓冲区可以用。
回复

使用道具 举报

8

主题

19

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2023-5-25 15:52:08 | 显示全部楼层
eric2013 发表于 2023-5-16 00:39
这个问题,我在你年初的帖子里面回复过

标准库bsp_uart_fifo.c里面串口发送函数UartSend修正完善

我记得您的回复,并按照帖子进行更改了,在数据已填满缓冲区的时候开启发送中断,也就是我一开始发送的图片里的程序一样,但是依然会有问题;
目前已经发现并解决了问题,根本原因是因为他们的抢占优先级不一样,修改后就恢复正常了,谢谢硬汉哥的回复~
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 04:41 , Processed in 0.299910 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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