热度 7
2022-9-25 21:51
819 次阅读|
0 个评论
使用platformio+arduino开发自定义板子STM32G070 2022-9-3 20:22:06 使用platformio平台和Arduino框架开发STM32G0,开发环境使用VSCode+PlatformIO插件; 1 自定义boards 因为Platformio中没有自己需要的STM32G070RB这个型号的板子,因此需要自己定义一个开发板型号。 1.1 添加一个自定义boards 首先这个是STM32系列,因此其boards目录如下(这里pio安装在默认位置): C:\Users\userName\.platformio\platforms\ststm32\boards 在这个目录新建一个board描述文件:MonkeyPi_STM32_G070RB.json,因为和STM32G071接近,因此可以复制 nucleo_g071rb.json文件 进行修改,内容如下: { "build": { "core": "stm32", "cpu": "cortex-m0plus", "extra_flags": "-DSTM32G0xx -DSTM32G070xx", "f_cpu": "64000000L", "framework_extra_flags": { "arduino": "-D__CORTEX_SC=0" }, "mcu": "stm32g070rbt6", "product_line": "STM32G070xx", "variant": "STM32G0xx/G070RBT" }, "debug": { "default_tools": , "jlink_device": "STM32G070RB", "onboard_tools": , "openocd_target": "stm32g0x", "svd_path": "STM32G070.svd" }, "frameworks": , "name": "MonkeyPi_STM32_G070RB", "upload": { "maximum_ram_size": 36864, "maximum_size": 131072, "protocol": "stlink", "protocols": }, "url": "https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html", "vendor": "ST" } 这里的 MonkeyPi_STM32_G070RB 就是自定义的板子名称; 1.2 Arduino框架下添加board定义 在目录 C:\Users\userName\.platformio\packages\framework-arduinoststm32 下有一个boards.txt文件,需要在这个文件中添加自定义的板子定义,内容可以根据近似的型号 NUCLEO_G071RB 进行修改,内容如下: # MonkeyPi STM32G070RB board Nucleo_64.menu.pnum.MonkeyPi_G070RB=MonkeyPi STM32G070RB Nucleo_64.menu.pnum.MonkeyPi_G070RB.node=NODE_G070RB Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_size=131072 Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_data_size=32768 Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.mcu=cortex-m0plus Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.board=MonkeyPi_STM32_G070RB Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.series=STM32G0xx Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.product_line=STM32G070xx Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.variant=G070RBT Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.cmsis_lib_gcc=arm_cortexM0l_math Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0 1.3 添加Arduino板的引脚定义 打开目录: C:\Users\userName\.platformio\packages\framework-arduinoststm32\variants\STM32G0xx 然后在这个目录的G070RB文件夹下复制 variant_generic.h 和 variant_generic.cpp 两个文件并更改名字为 variant_MONKEYPI_STM32_G070RB.h 和 variant_MONKEYPI_STM32_G070RB.cpp ,这个名字是之前自定义的板子名称,需要一致。 然后在variant_MONKEYPI_STM32_G070RB文件中根据板子硬件信息修改引脚定义,最后添加 SystemClock_Config 时钟配置函数如下: /** * @brief System Clock Configuration * @param None * @retval None */ WEAK void SystemClock_Config(void) { /* SystemClock_Config can be generated by STM32CubeMX */ #warning "SystemClock_Config() is empty. Default clock at reset is used." } 并修改文件的定义如下: #if defined(ARDUINO_MONKEYPI_STM32_G070RB) 注:如果G070RB目录下没有ldscript.ld这个文件,还需要从G071等相似目录下拷贝一个,这个在链接时候需要用到。 2 使用 2.1 新建项目 在pio的home中新建项目,选择自定义开发板型号 MonkeyPi_STM32_G070RB: 2.2 编写测试Arduino代码 打开项目中 src/main.cpp 文件,编写Arduino代码: #include void setup() { // put your setup code here, to run once: pinMode(PB5,OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(PB5,1); delay(100); digitalWrite(PB5,0); delay(100); } 2.3 烧写程序 烧写的方式需要根据自己的需要进行修改,比如我这里使用daplink swd方式下载,需要修改项目的platformio.ini文件: platform = ststm32 board = MonkeyPi_STM32_G070RB framework = arduino upload_protocol = cmsis-dap 修改完成后,点击platformio:Upload按钮即可完成烧写: