你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

上位机软件怎样接收ST-LINK上传给PC的烧录反馈信息

[复制链接]
你好asd 提问时间:2021-1-8 16:09 /
本人工作原因要用C#编写上位机软件,通过调用批处理文件(调用ST-LINK_CLI.exe)完成STM32芯片烧录。
现在遇到的问题是,我的上位机软件怎么接收ST-LINK-V2的反馈的烧录完成及校验消息。
收藏 评论6 发布时间:2021-1-8 16:09

举报

6个回答
废鱼 回答时间:2021-1-8 16:11:46
楼主,可以看一下STLINK的动态库文件处理的。可以用官方的FLASHLOADER,通过串口发送命令进行擦写。这个会有反馈的。
你好asd 回答时间:2021-1-8 16:21:27
谢谢,楼上回复!我调用自己写的批处理"C:\Program Files\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -c SWD HOTPLUG LPM -ME  -Q -P E:\Template\OBJ\Template.hex -V "after_programming" -Run 完成烧录的,这种情况我的程式能接收烧录器反馈的消息吗?
废鱼 回答时间:2021-1-8 16:24:34
这种情况应该是接收不到的。是否可以考虑检查进程中ST-LINK_CLI.exe是否结束来判断。
你好asd 回答时间:2021-1-8 16:37:29
谢谢回复!使用官网STM32 ST-LINK Utility烧录软件,这个软件的文本框里就有烧录状态的实时报告,可惜没有源码。不知道怎么实现的!我用上位机USB的HID方式连接ST-Link烧录器的PID、VIP也连接不上,按理说烧录器里用的是STM32F103C8这款IC,它的USB仅有虚拟串口、HID和DFU几种模式不应该抓不到呀
废鱼 回答时间:2021-1-8 17:14:50
用的是DLL库文件通讯,具体方法没有研究过。你可以看看STM32 ST-LINK Utility下面是不是有说明文档介绍DLL的使用。
你好asd 回答时间:2021-1-12 11:02:04
安 发表于 2021-1-8 17:14
用的是DLL库文件通讯,具体方法没有研究过。你可以看看STM32 ST-LINK Utility下面是不是有说明文档介绍DLL ...

谢谢回复!问题已解决。
上位机调用.dat后,再逐次读取隐藏的CMD页面信息。依此判断芯片烧录进展,主要代码如下:
string cmd = txtInput_CMD.Text;
            cmd = cmd.Trim().TrimEnd('&') + "&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态
            using (Process p = new Process())
            {
                p.StartInfo.FileName = @"你的文件路径\CMD.bat”
                p.StartInfo.UseShellExecute = false;        //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;   //接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;  //由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;   //重定向标准错误输出
                //p.StartInfo.Arguments = string.Format("10");//this is argument
                p.StartInfo.CreateNoWindow = true;          //不显示程序窗口
                p.Start();//启动程序
                //向cmd窗口写入命令
                p.StandardInput.WriteLine(cmd);
                p.StandardInput.AutoFlush = true;
                //获取cmd窗口的输出信息
                StreamReader reader = p.StandardOutput;//截取输出流
                string line = reader.ReadLine();//每次读取一行
                txtRX_CMD_Info.AppendText(line + "\n");
                while (!reader.EndOfStream)
                {
                    line = reader.ReadLine();
                    txtRX_CMD_Info.AppendText(line + "\n");
                }
                p.WaitForExit();//等待程序执行完退出进程
                p.Close();
            }

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版