使用Platformio平台的libopencm3开发框架来开发STM32G0,开发环境为VSCode+PIO插件,这里以开发STM32G070RB芯片为例介绍。
1 自定义开发板由于使用的STM32G070RB在pio的libopencm3框架中没有这个型号,因此首先需要先定义一个自定义开发板型号; - C:\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 新建测试项目
- 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 <libopencm3/stm32/rcc.h>
- 13#include <libopencm3/stm32/gpio.h>
- 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 编译和下载- 1[env:MonkeyPi_STM32_G070RB]
- 2platform = ststm32
- 3board = MonkeyPi_STM32_G070RB
- 4framework = libopencm3
- 5
- 6upload_protocol=cmsis-dap
- 7debug_tool=cmsis-dap
复制代码
转载自:MakerInChina.cn
|