使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,開發(fā)環(huán)境為VSCode+PIO插件,這里以開發(fā)STM32G070RB芯片為例介紹。
1 自定義開發(fā)板
由于使用的STM32G070RB在pio的libopencm3框架中沒有這個(gè)型號(hào),因此首先需要先定義一個(gè)自定義開發(fā)板型號(hào);
-
安裝ST-STM32 platforms
在Platformio的platforms中搜索STM32,然后安裝ST-STM32 platforms框架,
-
根據(jù)已有的相似型號(hào)進(jìn)行更改配置json文件
在PIO安裝目錄找到對(duì)應(yīng)平臺(tái)開發(fā)板文件夾,比如我這里pio安裝在默認(rèn)的用戶目錄,則STM32開發(fā)板的路徑如下:
1C:\\Users\\userName\\.platformio\\platforms\\ststm32\\boards
復(fù)制一個(gè)相近的板子型號(hào)的json配置文件命名為 MonkeyPi_STM32_G070RB.json,更改mcu型號(hào)、svd等信息;這里復(fù)制修改 nucleo_g071rb 這個(gè)json文件,修改后如下:
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}
2 新建測試項(xiàng)目
- 新建項(xiàng)目,并選擇開發(fā)板型號(hào)為自定義板子名稱 MonkeyPi_STM32_G070RB,開發(fā)框架選擇libopencm3:
- 在項(xiàng)目目錄 src下新建主程序文件 main.c ,內(nèi)容如下:
1/**
2 * @file main.c
3 * @author MakerInChina (makerinchina.cn)
4 * @brief
5 * @version 0.01
6 * @date 2022-09-04
7 *
8 * @copyright Copyright (c) 2022
9 *
10 */
11
12#include
13#include
14
15int main(void)
16{
17
18 //system clock
19 rcc_clock_setup(&rcc_clock_config[RCC_CLOCK_CONFIG_HSI_PLL_64MHZ]);
20
21 //gpio setting
22 rcc_periph_clock_enable(RCC_GPIOC);
23 gpio_mode_setup(GPIOC,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,GPIO12);
24
25 while (1)
26 {
27 //toggle gpio
28 gpio_toggle(GPIOC,GPIO12);
29
30 for(int i=0; i<4000000; i++){
31 __asm__("nop;");
32 }
33 }
34
35 return 0;
36}
這個(gè)測試程序中 先使用 rcc_clock_setup
函數(shù)配置系統(tǒng)時(shí)鐘為64MHz,然后使用 gpio_mode_setup 函數(shù)設(shè)置GPIO模式,最后調(diào)用 gpio_toggle 對(duì)GPIO進(jìn)行翻轉(zhuǎn)操作。
3 編譯和下載
- 下載方式需要根據(jù)自己的硬件進(jìn)行修改,在項(xiàng)目的platformio.ini文件中可以配置,這里使用DAPLink SWD方式下載,因此將upload_protocol更改為cmsis-dap,則platformio.ini文件如下:
1[env:MonkeyPi_STM32_G070RB]
2platform = ststm32
3board = MonkeyPi_STM32_G070RB
4framework = libopencm3
5
6upload_protocol=cmsis-dap
7debug_tool=cmsis-dap
- 然后就可以進(jìn)行燒錄和調(diào)試了(使用openocd方式進(jìn)行下載和調(diào)試):
-
mcu
+關(guān)注
關(guān)注
146文章
17918瀏覽量
362765 -
STM32
+關(guān)注
關(guān)注
2291文章
11022瀏覽量
363481 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5622瀏覽量
103590 -
JSON
+關(guān)注
關(guān)注
0文章
122瀏覽量
7338 -
PIO
+關(guān)注
關(guān)注
0文章
19瀏覽量
6400
發(fā)布評(píng)論請(qǐng)先 登錄
STM32G0開發(fā)筆記:FreeRTOS和FreeModbus庫使用

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

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

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

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

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

STM32G0開發(fā)筆記:I2C接口軟件模擬與GXHT30溫濕度模塊

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

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

評(píng)論