你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G070—使用platformio+arduino

[复制链接]
STMCU小助手 发布时间:2023-2-23 22:00
使用platformio平台和Arduino框架开发STM32G0,开发环境使用VSCode+PlatformIO插件;

1 自定义boards
因为Platformio中没有自己需要的STM32G070RB这个型号的板子,因此需要自己定义一个开发板型号。

1.1 添加一个自定义boards
首先这个是STM32系列,因此其boards目录如下(这里pio安装在默认位置):
  1. C:\Users\userName\.platformio\platforms\ststm32\boards
复制代码

在这个目录新建一个board描述文件:MonkeyPi_STM32_G070RB.json,因为和STM32G071接近,因此可以复制 nucleo_g071rb.json文件 进行修改,内容如下:
  1. 1{
  2. 2  "build": {
  3. 3    "core": "stm32",
  4. 4    "cpu": "cortex-m0plus",
  5. 5    "extra_flags": "-DSTM32G0xx -DSTM32G070xx",
  6. 6    "f_cpu": "64000000L",
  7. 7    "framework_extra_flags": {
  8. 8      "arduino": "-D__CORTEX_SC=0"
  9. 9    },
  10. 10    "mcu": "stm32g070rbt6",
  11. 11    "product_line": "STM32G070xx",
  12. 12    "variant": "STM32G0xx/G070RBT"
  13. 13  },
  14. 14  "debug": {
  15. 15    "default_tools": [
  16. 16      "stlink"
  17. 17    ],
  18. 18    "jlink_device": "STM32G070RB",
  19. 19    "onboard_tools": [
  20. 20      "stlink"
  21. 21    ],
  22. 22    "openocd_target": "stm32g0x",
  23. 23    "svd_path": "STM32G070.svd"
  24. 24  },
  25. 25  "frameworks": [
  26. 26    "arduino",
  27. 27    "cmsis",
  28. 28    "libopencm3",
  29. 29    "stm32cube",
  30. 30    "zephyr"
  31. 31  ],
  32. 32  "name": "MonkeyPi_STM32_G070RB",
  33. 33  "upload": {
  34. 34    "maximum_ram_size": 36864,
  35. 35    "maximum_size": 131072,
  36. 36    "protocol": "stlink",
  37. 37    "protocols": [
  38. 38      "stlink",
  39. 39      "jlink",
  40. 40      "cmsis-dap",
  41. 41      "blackmagic",
  42. 42      "mbed"
  43. 43    ]
  44. 44  },
  45. 45  "url": "https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html",
  46. 46  "vendor": "ST"
  47. 47}
复制代码

这里的 MonkeyPi_STM32_G070RB 就是自定义的板子名称;

1.2 Arduino框架下添加board定义
在目录
  1. C:\Users\userName\.platformio\packages\framework-arduinoststm32
复制代码

下有一个boards.txt文件,需要在这个文件中添加自定义的板子定义,内容可以根据近似的型号 NUCLEO_G071RB 进行修改,内容如下:
  1. 1# MonkeyPi STM32G070RB board
  2. 2Nucleo_64.menu.pnum.MonkeyPi_G070RB=MonkeyPi STM32G070RB
  3. 3Nucleo_64.menu.pnum.MonkeyPi_G070RB.node=NODE_G070RB
  4. 4Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_size=131072
  5. 5Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_data_size=32768
  6. 6Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.mcu=cortex-m0plus
  7. 7Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.board=MonkeyPi_STM32_G070RB
  8. 8Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.series=STM32G0xx
  9. 9Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.product_line=STM32G070xx
  10. 10Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.variant=G070RBT
  11. 11Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.cmsis_lib_gcc=arm_cortexM0l_math
  12. 12Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0
复制代码

1.3 添加Arduino板的引脚定义
打开目录:
  1. 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 时钟配置函数如下:
  1. 1/**
  2. 2  * @brief  System Clock Configuration
  3. 3  * @param  None
  4. 4  * @retval None
  5. 5  */
  6. 6WEAK void SystemClock_Config(void)
  7. 7{
  8. 8  /* SystemClock_Config can be generated by STM32CubeMX */
  9. 9#warning "SystemClock_Config() is empty. Default clock at reset is used."
  10. 10}
复制代码

并修改文件的定义如下:
  1. #if defined(ARDUINO_MONKEYPI_STM32_G070RB)
复制代码

注:如果G070RB目录下没有ldscript.ld这个文件,还需要从G071等相似目录下拷贝一个,这个在链接时候需要用到。

2 使用2.1 新建项目
在pio的home中新建项目,选择自定义开发板型号 MonkeyPi_STM32_G070RB:


微信图片_20230222220629.png


2.2 编写测试Arduino代码
打开项目中 src/main.cpp 文件,编写Arduino代码:
  1. 1#include <Arduino.h>
  2. 2
  3. 3void setup() {
  4. 4  // put your setup code here, to run once:
  5. 5
  6. 6  pinMode(PB5,OUTPUT);
  7. 7
  8. 8}
  9. 9
  10. 10void loop() {
  11. 11  // put your main code here, to run repeatedly:
  12. 12
  13. 13  digitalWrite(PB5,1);
  14. 14  delay(100);
  15. 15  digitalWrite(PB5,0);
  16. 16  delay(100);
  17. 17
  18. 18}
复制代码

2.3 烧写程序
烧写的方式需要根据自己的需要进行修改,比如我这里使用daplink swd方式下载,需要修改项目的platformio.ini文件:
  1. 1[env:MonkeyPi_STM32_G070RB]
  2. 2platform = ststm32
  3. 3board = MonkeyPi_STM32_G070RB
  4. 4framework = arduino
  5. 5
  6. 6upload_protocol = cmsis-dap
复制代码

修改完成后,点击platformio:Upload按钮即可完成烧写:

微信图片_20230222220316.png

转载自:MakerInChina.cn
收藏 评论0 发布时间:2023-2-23 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版