我对如何实现这一目标感到迷失。在理论上看起来是如此简单,但是我已经尝试了所有我能想到的以及我理解的所有相关示例。
因此,我正在尝试使微控制器的刷新过程自动化,发现我可以在命令提示符下而不是实用程序应用程序中使用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')
似乎什么也没做...
[我已经尝试过使用子流程,因为我已经知道它是一个强大的工具,但是似乎无法找到在这种情况下如何使用它的方法。到目前为止,进展是:
p = Popen(['ST-LINK_CLI.exe'], stdout=PIPE, stdin=PIPE, stderr=PIPE, shell=True)
stdout_data = p.communicate(input='enter')[0]
如果我尝试其他操作,它将读出“ ValueError:对已关闭文件的I / O操作”。感谢您提供的所有帮助!
我想通了!
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软件手册在某些方面不是很具描述性,但是必须添加十六进制地址,因为没有它就无法工作。完全自动化,我来了!希望这也可以帮助某人自动化其刷新过程!