0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用platformio平臺(tái)和Arduino框架開發(fā)STM32G0

CHANBAEK ? 來(lái)源:電子技術(shù)攻城獅 ? 作者:MakerInChina.cn ? 2023-01-17 11:05 ? 次閱讀

使用platformio平臺(tái)和Arduino框架開發(fā)STM32G0,開發(fā)環(huán)境使用VSCode+PlatformIO插件;

1 自定義boards

因?yàn)镻latformio中沒(méi)有自己需要的STM32G070RB這個(gè)型號(hào)的板子,因此需要自己定義一個(gè)開發(fā)板型號(hào)。

1.1 添加一個(gè)自定義boards

首先這個(gè)是STM32系列,因此其boards目錄如下(這里pio安裝在默認(rèn)位置):

C:\\Users\\userName\\.platformio\\platforms\\ststm32\\boards

在這個(gè)目錄新建一個(gè)board描述文件:MonkeyPi_STM32_G070RB.json,因?yàn)楹蚐TM32G071接近,因此可以復(fù)制 nucleo_g071rb.json文件 進(jìn)行修改,內(nèi)容如下:

1{
 2  "build": {
 3    "core": "stm32",
 4    "cpu": "cortex-m0plus",
 5    "extra_flags": "-DSTM32G0xx -DSTM32G070xx",
 6    "f_cpu": "64000000L",
 7    "framework_extra_flags": {
 8      "arduino": "-D__CORTEX_SC=0"
 9    },
10    "mcu": "stm32g070rbt6",
11    "product_line": "STM32G070xx",
12    "variant": "STM32G0xx/G070RBT"
13  },
14  "debug": {
15    "default_tools": [
16      "stlink"
17    ],
18    "jlink_device": "STM32G070RB",
19    "onboard_tools": [
20      "stlink"
21    ],
22    "openocd_target": "stm32g0x",
23    "svd_path": "STM32G070.svd"
24  },
25  "frameworks": [
26    "arduino",
27    "cmsis",
28    "libopencm3",
29    "stm32cube",
30    "zephyr"
31  ],
32  "name": "MonkeyPi_STM32_G070RB",
33  "upload": {
34    "maximum_ram_size": 36864,
35    "maximum_size": 131072,
36    "protocol": "stlink",
37    "protocols": [
38      "stlink",
39      "jlink",
40      "cmsis-dap",
41      "blackmagic",
42      "mbed"
43    ]
44  },
45  "url": "https://www.st.com/zh/microcontrollers-microprocessors/stm32g070rb.html",
46  "vendor": "ST"
47}

這里的 MonkeyPi_STM32_G070RB 就是自定義的板子名稱;

1.2 Arduino框架下添加board定義

在目錄

C:\\Users\\userName\\.platformio\\packages\\framework-arduinoststm32

下有一個(gè)boards.txt文件,需要在這個(gè)文件中添加自定義的板子定義,內(nèi)容可以根據(jù)近似的型號(hào) NUCLEO_G071RB 進(jìn)行修改,內(nèi)容如下:

1# MonkeyPi STM32G070RB board
 2Nucleo_64.menu.pnum.MonkeyPi_G070RB=MonkeyPi STM32G070RB
 3Nucleo_64.menu.pnum.MonkeyPi_G070RB.node=NODE_G070RB
 4Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_size=131072
 5Nucleo_64.menu.pnum.MonkeyPi_G070RB.upload.maximum_data_size=32768
 6Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.mcu=cortex-m0plus
 7Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.board=MonkeyPi_STM32_G070RB
 8Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.series=STM32G0xx
 9Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.product_line=STM32G070xx
10Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.variant=G070RBT
11Nucleo_64.menu.pnum.MonkeyPi_G070RB.build.cmsis_lib_gcc=arm_cortexM0l_math
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板的引腳定義

打開目錄:

C:\\Users\\userName\\.platformio\\packages\\framework-arduinoststm32\\variants\\STM32G0xx

然后在這個(gè)目錄的G070RB文件夾下復(fù)制 variant_generic.h 和 variant_generic.cpp 兩個(gè)文件并更改名字為 variant_MONKEYPI_STM32_G070RB.h 和 variant_MONKEYPI_STM32_G070RB.cpp ,這個(gè)名字是之前自定義的板子名稱,需要一致。

然后在variant_MONKEYPI_STM32_G070RB文件中根據(jù)板子硬件信息修改引腳定義,最后添加 SystemClock_Config 時(shí)鐘配置函數(shù)如下:

1/**
 2  * @brief  System Clock Configuration
 3  * @param  None
 4  * @retval None
 5  */
 6WEAK void SystemClock_Config(void)
 7{
 8  /* SystemClock_Config can be generated by STM32CubeMX */
 9#warning "SystemClock_Config() is empty. Default clock at reset is used."
10}

并修改文件的定義如下:

#if defined(ARDUINO_MONKEYPI_STM32_G070RB)

注:如果G070RB目錄下沒(méi)有l(wèi)dscript.ld這個(gè)文件,還需要從G071等相似目錄下拷貝一個(gè),這個(gè)在鏈接時(shí)候需要用到。

2 使用

2.1 新建項(xiàng)目

在pio的home中新建項(xiàng)目,選擇自定義開發(fā)板型號(hào) MonkeyPi_STM32_G070RB:

2.2 編寫測(cè)試Arduino代碼

打開項(xiàng)目中 src/main.cpp 文件,編寫Arduino代碼:

1#include 
 2
 3void setup() {
 4  // put your setup code here, to run once:
 5
 6  pinMode(PB5,OUTPUT);
 7
 8}
 9
10void loop() {
11  // put your main code here, to run repeatedly:
12
13  digitalWrite(PB5,1);
14  delay(100);
15  digitalWrite(PB5,0);
16  delay(100);
17
18}
2.3 燒寫程序

燒寫的方式需要根據(jù)自己的需要進(jìn)行修改,比如我這里使用daplink swd方式下載,需要修改項(xiàng)目的platformio.ini文件:

1[env:MonkeyPi_STM32_G070RB]
2platform = ststm32
3board = MonkeyPi_STM32_G070RB
4framework = arduino
5
6upload_protocol = cmsis-dap

修改完成后,點(diǎn)擊platformio:Upload按鈕即可完成燒寫:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2262

    文章

    10846

    瀏覽量

    353650
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4834

    瀏覽量

    96820
  • Boards
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    10188
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186343
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    152

    瀏覽量

    7625
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PlatformIO使用Arduino框架開發(fā)STM32

    ??其實(shí)使用Arduino框架開發(fā)STM32并不新鮮,但以前大部分人是用Arduino IDE開發(fā)的,本文介紹一下在VS Code中,通過(guò)
    發(fā)表于 11-23 18:21 ?9次下載
    <b class='flag-5'>PlatformIO</b>使用<b class='flag-5'>Arduino</b><b class='flag-5'>框架開發(fā)</b><b class='flag-5'>STM32</b>

    STM32G0開發(fā)筆記:FreeRTOS和FreeModbus庫(kù)使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下為FreeR
    的頭像 發(fā)表于 01-16 14:44 ?5204次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:FreeRTOS和FreeModbus庫(kù)使用

    STM32G0開發(fā)筆記:FreeRTOS和CLI組件使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下為FreeR
    的頭像 發(fā)表于 01-16 14:47 ?3193次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:FreeRTOS和CLI組件使用

    STM32G0開發(fā)筆記:使用FreeRTOS系統(tǒng)的隊(duì)列Queue

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面為使用Fre
    的頭像 發(fā)表于 01-16 14:50 ?1273次閱讀

    STM32G0開發(fā)筆記:使用FreeRTOS系統(tǒng)

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面為使用Fre
    的頭像 發(fā)表于 01-16 15:07 ?2206次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:使用FreeRTOS系統(tǒng)

    STM32G0開發(fā)筆記:使用ADC進(jìn)行NTC溫度采集

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下使用ADC進(jìn)
    的頭像 發(fā)表于 01-16 15:12 ?8685次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:使用ADC進(jìn)行NTC溫度采集

    STM32G0開發(fā)筆記:用PWM來(lái)實(shí)現(xiàn)LED呼吸燈效果

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面使用PWM來(lái)
    的頭像 發(fā)表于 01-16 15:15 ?2132次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:用PWM來(lái)實(shí)現(xiàn)LED呼吸燈效果

    STM32G0開發(fā)筆記:EEPROM M24C02的使用方法

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下為EEPRO
    的頭像 發(fā)表于 01-16 15:19 ?2610次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:EEPROM M24C02的使用方法

    STM32G0開發(fā)筆記:SD卡模塊的使用方法

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面介紹SD卡模
    的頭像 發(fā)表于 01-19 16:27 ?2096次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:SD卡模塊的使用方法

    STM32G0開發(fā)筆記:SPI接口的基本使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面介紹SPI接
    的頭像 發(fā)表于 01-17 10:38 ?2952次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:SPI接口的基本使用

    STM32G0開發(fā)筆記:多通道ADC與DMA的使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下為多通道AD
    的頭像 發(fā)表于 01-17 10:41 ?6588次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:多通道ADC與DMA的使用

    STM32G0開發(fā)筆記:定時(shí)器timer的基本使用方法

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下為定時(shí)器ti
    的頭像 發(fā)表于 01-17 10:43 ?3499次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:定時(shí)器timer的基本使用方法

    STM32G0開發(fā)筆記:串口中斷的使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,以下為串口中斷的
    的頭像 發(fā)表于 01-17 10:46 ?2206次閱讀

    STM32G0開發(fā)筆記:GPIO接按鍵的使用方式

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面為GPIO接
    的頭像 發(fā)表于 01-17 10:48 ?1651次閱讀

    STM32G0開發(fā)筆記:LED燈示例

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來(lái)開發(fā)STM32G0,下面為L(zhǎng)ED燈示
    的頭像 發(fā)表于 01-17 10:52 ?1325次閱讀
    <b class='flag-5'>STM32G0</b><b class='flag-5'>開發(fā)</b>筆記:LED燈示例