硬汉嵌入式论坛

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

[技术讨论] 多串口中断异常

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2025-2-11 10:49:22 | 显示全部楼层 |阅读模式
本帖最后由 清风徐走 于 2025-2-11 10:52 编辑

改公司的老代码,添加了额外的两个串口,中断分组NVIC_PRIORITYGROUP_2,中断优先级配置如下图1
1.png
串口1虽然配置了 但没有使用
串口2是调试口
串口3是传感器ModBus 9600波特率
裸机运行 HAL库 串口没有使用HAL的中断回调函数 直接在串口中断里添加获取字符的逻辑
正常使用调试口几包数据后就没有响应了
调试却能够正常运行
于是在正常运行的情况下等待出现问题
然后不复位进入调试
发现程序停留在串口中断3函数
但是调试模式下继续运行又恢复正常了
修改了中断中断分组NVIC_PRIORITYGROUP_4
并将各中断优先级修改为下图2所示
2.png
程序正常 没有出现问题 但并不知道为啥 按理来说即使中断抢占与响应优先级相同 应该也不会出现问题吧
想问问硬汉哥有没有啥思路


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116223
QQ
发表于 2025-2-11 13:04:26 | 显示全部楼层
有可能是你的串口中断服务程序实现问题,推荐使用回调,回调里面区分当前是那个串口响应,HAL是共用的一个串口中断处理服务程序。

使用推荐NVIC优先级分组设置为4,  16级抢占优先级,方便重要中断的优先级设置。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2025-2-11 14:15:27 | 显示全部楼层
eric2013 发表于 2025-2-11 13:04
有可能是你的串口中断服务程序实现问题,推荐使用回调,回调里面区分当前是那个串口响应,HAL是共用的一个 ...

按照这样的方式改了,问题消失了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 13:37 , Processed in 0.348333 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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