STM32 CLI 提示命令行 (Python)

STM32 CLI Prompts To Command Line (Python)

我对如何实现这一点感到迷茫..理论上看起来很简单,但我已经尝试了我能想到的一切以及我理解的所有相关示例..

所以,我正在尝试自动化刷写微控制器的过程,发现我可以在命令提示符下使用 STM32 Link CLI,而不是实用程序应用程序(您必须在其中单击每个按钮个别)。我希望将其合并到我的 Python 代码中,我在其中测试我正在刷新的电路板以完全自动化整个过程。

我今年才开始编码,所以我对此有点陌生...我可以将其输入命令终端:

"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -c -p "C:\Users\Desktop\TempCtrl.bin" -Rst -Run

正确闪烁,但我似乎无法在 Python 中复制此行:

os.system('"C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -c -p "C:\Users\Desktop\TempCtrl.bin" -Rst -Run')

好像什么都没做...

我已经尝试使用 subprocess,因为我看到它是一个强大的工具,但似乎无法找到如何在这种情况下使用它。目前的进展:

p = Popen(['ST-LINK_CLI.exe'], stdout=PIPE, stdin=PIPE, stderr=PIPE, shell=True)
stdout_data = p.communicate(input='enter')[0]

如果我尝试其他任何操作,它会显示 "ValueError: I/O operation on closed file"。 感谢您提供的所有帮助!

我想通了!

import subprocess
subprocess.check_output(['C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe', '-c', '-p', 'C:\Users\Desktop\TempCtrl.bin', '0x08000000', '-V', '-Rst', 'Run'])

这似乎可以解决问题。 CLI 软件手册在某些方面没有很好的描述,但必须添加十六进制地址,因为没有它就无法工作。全自动化我来了!希望这也能帮助其他人实现 Flash 过程的自动化!