如果要通过串口给51或者32等单片机烧写程序,很多时候需要HEX文件。Keil软件中就有输出HEX文件的设置,勾选一下就行,但是,PlatformIO好像还没这么方便的操作,下面我以STM32工程为例,介绍一下如何通过代码配置PlatformIO生成HEX文件。
首先,在工程目录下新建extra_script.py文件(和platformio.ini在同一目录下),代码如下:
Import("env")
env.AddPostAction(
"$BUILD_DIR/${PROGNAME}.elf",
env.VerboseAction(" ".join([
"$OBJCOPY", "-O", "ihex", "-R", ".eeprom",
"$BUILD_DIR/${PROGNAME}.elf", "$BUILD_DIR/${PROGNAME}.hex"
]), "Building $BUILD_DIR/${PROGNAME}.hex")
)
然后,在VS Code左侧项目列表打开platformio.ini文件,在最后一行增加如下代码:
extra_scripts = extra_script.py
我的platformio.ini完整如下:
[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = arduino
extra_scripts = extra_script.py
OK,配置完成,可以点击VS Code底部的“对勾”按钮进行编译了,编译成功就会生成HEX文件,生成路径如下: