使用platformio平臺(tái)和Arduino框架開(kāi)發(fā)STM32G0,開(kāi)發(fā)環(huán)境使用VSCode+PlatformIO插件;
1 自定義boards
因?yàn)镻latformio中沒(méi)有自己需要的STM32G070RB這個(gè)型號(hào)的板子,因此需要自己定義一個(gè)開(kāi)發(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 就是自定義的板子名稱(chēng);
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板的引腳定義
打開(kāi)目錄:
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è)名字是之前自定義的板子名稱(chēng),需要一致。
然后在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)目,選擇自定義開(kāi)發(fā)板型號(hào) MonkeyPi_STM32_G070RB:
2.2 編寫(xiě)測(cè)試Arduino代碼
打開(kāi)項(xiàng)目中 src/main.cpp 文件,編寫(xiě)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 燒寫(xiě)程序
燒寫(xiě)的方式需要根據(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按鈕即可完成燒寫(xiě):
-
STM32
+關(guān)注
關(guān)注
2283文章
10986瀏覽量
361150 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5380瀏覽量
100709 -
Boards
+關(guān)注
關(guān)注
0文章
4瀏覽量
10238 -
Arduino
+關(guān)注
關(guān)注
188文章
6485瀏覽量
189636 -
vscode
+關(guān)注
關(guān)注
1文章
166瀏覽量
8270
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
PlatformIO使用Arduino框架開(kāi)發(fā)STM32

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

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

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

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

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

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

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

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

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

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

STM32G0開(kāi)發(fā)筆記:串口中斷的使用
STM32G0開(kāi)發(fā)筆記:GPIO接按鍵的使用方式
STM32G0開(kāi)發(fā)筆記:LED燈示例

評(píng)論