[其他ST产品] 与MATLAB串口通信有时不成功

[复制链接]
 楼主| 梧桐uuu 发表于 2025-4-2 10:30 | 显示全部楼层 |阅读模式
本帖最后由 梧桐uuu 于 2025-7-28 22:30 编辑

用 STM32CubeIDE 写程序通过串口从 MATLAB 中获取数据。
第一次在 STM32CubeIDE 中运行程序,并通过串口从 MATLAB 中获取正确的数据
//MATLAB serial codes=serial('COM5','BaudRate',9600);fopen(s);data=fscanf(s);d23=str2num(data)x=plot(d23);
但是第二次运行用 程序获取数据时,显示“COM 端口不可用”之类的错误。
所以现在我要经常关闭 MATLAB 窗口,然后再次打开 MATLAB 。
不知道如何避免这种错误提示

公羊子丹 发表于 2025-4-3 07:36 | 显示全部楼层
你试试在 MATLAB 里先执行 fclose(s); delete(s); clear s; 释放串口资源,然后再运行看看还能不能获取数据?
周半梅 发表于 2025-4-3 07:37 | 显示全部楼层
这个问题可能是 MATLAB 没有正确关闭串口连接,导致端口被占用。你可以在 MATLAB 代码的最后加上 fclose(s); delete(s); clear s; 试试看。
帛灿灿 发表于 2025-4-3 07:37 | 显示全部楼层
我之前遇到过类似情况,可能是 MATLAB 在程序崩溃或者中断时没有释放串口。你可以在命令窗口输入 instrfind 看看是否还有未关闭的串口连接。
童雨竹 发表于 2025-4-3 07:38 | 显示全部楼层
你是不是每次运行都重新创建了 serial 对象?建议先检查 instrfind,如果端口已经打开,先 fclose 释放再创建新的对象。
万图 发表于 2025-4-3 07:39 | 显示全部楼层
这个问题我也碰到过,MATLAB 有时候会占住 COM 口,建议你运行 delete(instrfindall); 先清理一下所有串口对象再试试。
Wordsworth 发表于 2025-4-3 07:40 | 显示全部楼层
你可以在 MATLAB 代码里加个 try...catch 语句,这样即使出错也能确保正确关闭串口,避免下次打开时被占用。
Bblythe 发表于 2025-4-3 07:41 | 显示全部楼层
你试过在 STM32CubeIDE 端手动复位 STM32 开发板吗?有时候板子上的串口没有正确关闭,复位一下可能会好用。
Pulitzer 发表于 2025-4-3 07:42 | 显示全部楼层
可能是 MATLAB 的串口对象在程序结束后没有及时释放,你试试手动关闭 MATLAB 进程,看看是不是还能打开 COM 口?
Uriah 发表于 2025-4-3 07:43 | 显示全部楼层
你要不试试把 serial 换成 serialport?MATLAB 2019 之后推荐用 serialport 代替 serial,据说稳定性更好。
Clyde011 发表于 2025-4-3 07:44 | 显示全部楼层
你也可以试试在 MATLAB 里 fopen(s); pause(1); fclose(s); 反复开关串口,看能不能手动释放 COM 口资源。
probedog 发表于 2025-4-3 11:13 | 显示全部楼层
串口未正确关闭导致的?
elephant00 发表于 2025-4-3 11:19 | 显示全部楼层
用逻辑分析仪来监测串口通信的信号是否异常。
classroom 发表于 2025-4-3 12:59 | 显示全部楼层
在 MATLAB 中,每次使用完串口后,都应使用 fclose(s) 命令来关闭它。
laocuo1142 发表于 2025-4-3 13:46 | 显示全部楼层
检查串口是否被占用。
flycamelaaa 发表于 2025-4-3 14:26 | 显示全部楼层
在 MATLAB 中,使用 try-catch 结构来捕获并处理可能出现的错误,可以帮助你更优雅地处理串口不可用的情况,而不是让程序崩溃。
powerantone 发表于 2025-4-3 15:16 | 显示全部楼层
重启 MATLAB 或电脑试试。
两只袜子 发表于 2025-4-3 17:00 | 显示全部楼层
用HAL 库或 LL 库试试吧。
jcky001 发表于 2025-4-3 18:00 | 显示全部楼层
在 MATLAB 中不要同时尝试打开同一个串口的多个实例。
stormwind123 发表于 2025-4-3 18:06 | 显示全部楼层
检查 STM32CubeIDE 中的串口设置是否有误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

44

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

42

主题

44

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部