使用Platformio平臺的libopencm3開發(fā)框架來開發(fā)STM32G0,開發(fā)環(huán)境為VSCode+PIO插件,這里以開發(fā)STM32G070RB芯片為例介紹。
1 自定義開發(fā)板
由于使用的STM32G070RB在pio的libopencm3框架中沒有這個型號,因此首先需要先定義一個自定義開發(fā)板型號;
-
安裝ST-STM32 platforms
在Platformio的platforms中搜索STM32,然后安裝ST-STM32 platforms框架,
-
根據(jù)已有的相似型號進行更改配置json文件
在PIO安裝目錄找到對應(yīng)平臺開發(fā)板文件夾,比如我這里pio安裝在默認的用戶目錄,則STM32開發(fā)板的路徑如下:
1C:\\Users\\userName\\.platformio\\platforms\\ststm32\\boards
復(fù)制一個相近的板子型號的json配置文件命名為 MonkeyPi_STM32_G070RB.json,更改mcu型號、svd等信息;這里復(fù)制修改 nucleo_g071rb 這個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 新建測試項目
- 新建項目,并選擇開發(fā)板型號為自定義板子名稱 MonkeyPi_STM32_G070RB,開發(fā)框架選擇libopencm3:
- 在項目目錄 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}
這個測試程序中 先使用 rcc_clock_setup
函數(shù)配置系統(tǒng)時鐘為64MHz,然后使用 gpio_mode_setup 函數(shù)設(shè)置GPIO模式,最后調(diào)用 gpio_toggle 對GPIO進行翻轉(zhuǎn)操作。
3 編譯和下載
- 下載方式需要根據(jù)自己的硬件進行修改,在項目的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
- 然后就可以進行燒錄和調(diào)試了(使用openocd方式進行下載和調(diào)試):
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351186 -
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
355985 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5050瀏覽量
97456 -
JSON
+關(guān)注
關(guān)注
0文章
117瀏覽量
6964 -
PIO
+關(guān)注
關(guān)注
0文章
18瀏覽量
6210
發(fā)布評論請先 登錄
相關(guān)推薦
評論