完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题:实验现象是用CUBE配置好的代码,HAL库,修改中断函数,增加空闲中断处理不定长数据接收,在使用串口助手进行调试时发现,连续快速点击发送按钮,串口会卡死,为了确认卡死的地方,在所有异常中断中都加了LED指示,最后发现在接收数据时LED指示常亮,证明是卡死在数据接收中。为了验证,在串口助手中设置1MS自动发送,程序不会卡死。但只要在单次发送模式用手连续快速点击发送,100%卡死。怀疑串口助手有问题,换助手后一样。在出现卡死后,程序也不知道跑在哪里了,按复位能恢复;但在用STLINK进入DEBUG模式下跑代码测试,不会出现卡死现象。
中断部分处理代码如下:
|
|
相关推荐
1个回答
|
|
STM32L051串口接收卡死的原因可能有以下几个可能性:
1. 软件bug:在接收数据时可能存在一些逻辑错误或者死循环导致卡死。你可以仔细检查接收数据的逻辑代码,确保没有错误。 2. 缓冲区溢出:如果接收数据速度过快,可能会导致接收缓冲区溢出,从而造成卡死。你可以检查接收缓冲区的大小是否合适,如果不够大,可以适当增大缓冲区的大小。 3. 中断优先级问题:如果不正确地设置了中断优先级,可能会导致中断嵌套或者中断重入,从而引发卡死。你可以检查一下中断优先级的设置是否正确。 4. 时钟问题:如果时钟设置不正确,可能会导致串口通信不稳定,进而导致卡死。你可以检查一下时钟设置是否正确。 5. 芯片硬件问题:如果芯片本身存在硬件问题,也可能会导致卡死。你可以尝试在其他开发板上测试同样的代码,看是否也会卡死。 在调试过程中,你可以尝试以下方法来定位问题: 1. 使用调试器:通过调试器逐步执行程序,观察在哪个位置发生卡死,可以帮助你定位问题所在。 2. 日志输出:在关键位置增加日志输出,观察输出的日志,可以帮助你判断程序执行到哪里。 3. 使用逻辑分析仪:使用逻辑分析仪来观察串口通信的波形,可以检查是否存在波特率、数据位等设置问题。 希望以上方法对你有帮助。如果还有其他问题,请随时追问。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1801 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
745浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 21:37 , Processed in 0.836147 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号