【问题标题】:STM32 CLI Prompts To Command Line (Python)STM32 CLI 提示命令行(Python)
【发布时间】:2020-08-24 14:30:20
【问题描述】:

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

所以,我正在尝试自动化刷新微控制器的过程,发现我可以在命令提示符下使用 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”。 感谢您的任何帮助!

【问题讨论】:

    标签: python-2.7 subprocess microcontroller stm32 os.system


    【解决方案1】:

    我想通了!

    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 软件手册在某些方面的描述性不是很好,但必须添加十六进制地址,因为没有它就无法工作。全自动化我来了!希望这也有助于某人自动化他们的闪存过程!

    【讨论】:

    • 太棒了。只是为了确认使用哪个接口来刷板。因为我认为在 -c 之后我们应该给出接口类型。如下
    • "C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe" -c SWD -p "C:\Users\Desktop\ TempCtrl.bin" -Rst -Run
    • 哦!感谢您指出 dev_eng。它确实默认为 SWD,但为了清楚起见,我最好添加它。
    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2023-03-25
    相关资源
    最近更新 更多