使用Platformio平台的libopencm3开发框架来开发STM32G0,开发环境为VSCode+PIO插件,这里以开发STM32G070RB芯片为例介绍。
1 自定义开发板
由于使用的STM32G070RB在pio的libopencm3框架中没有这个型号,因此首先需要先定义一个自定义开发板型号;
-
安装ST-STM32 platforms
在Platformio的platforms中搜索STM32,然后安装ST-STM32 platforms框架,
-
根据已有的相似型号进行更改配置json文件
在PIO安装目录找到对应平台开发板文件夹,比如我这里pio安装在默认的用户目录,则STM32开发板的路径如下:
1C:\\Users\\userName\\.platformio\\platforms\\ststm32\\boards
复制一个相近的板子型号的json配置文件命名为 MonkeyPi_STM32_G070RB.json,更改mcu型号、svd等信息;这里复制修改 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 新建测试项目
- 新建项目,并选择开发板型号为自定义板子名称 MonkeyPi_STM32_G070RB,开发框架选择libopencm3:
- 在项目目录 src下新建主程序文件 main.c ,内容如下:
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
函数配置系统时钟为64MHz,然后使用 gpio_mode_setup 函数设置GPIO模式,最后调用 gpio_toggle 对GPIO进行翻转操作。
3 编译和下载
- 下载方式需要根据自己的硬件进行修改,在项目的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
- 然后就可以进行烧录和调试了(使用openocd方式进行下载和调试):
-
mcu
+关注
关注
146文章
16984浏览量
350263 -
STM32
+关注
关注
2266文章
10870浏览量
354746 -
开发板
+关注
关注
25文章
4943浏览量
97178 -
JSON
+关注
关注
0文章
117浏览量
6940 -
PIO
+关注
关注
0文章
18浏览量
6191
发布评论请先 登录
相关推荐
评论