STM32G0开发笔记-Platformio+libopencm3-PWM使用与LED呼吸灯
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面使用PWM来实现LED呼吸灯效果。
1 新建项目
在PIO主页新建项目pwm,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
新建完成后在src目录新建主程序文件main.c;
然后更改项目文件platformio.ini的烧写和调试方式:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 PWM配置
GPIO设置为复用PWM输出
123456789101112131415161718/** * @brief gpio config * */static void gpio_setup(void){ rcc_periph_clock_enable(RCC_GPIOC); gpio_mode_setup(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, ...
STM32G0开发笔记-Platformio+libopencm3-SPI接口SD卡使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SD卡模块的使用方法。
1 新建项目
在PIO主页新建项目spi_sdcard,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
新建完成后在src目录新建主程序文件main.c;
然后更改项目文件platformio.ini的烧写和调试方式:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序2.1 加入FATFS库
从网站fatfs http://elm-chan.org/fsw/ff/00index_e.html 下载最新的源码;
工程目录lib下新建fatfs文件夹;
然后将fatfs源码的source目录下所有文件放置到工程的lib\fatfs目录下;
将diskio.c文件移动到src目录下,这个文件是需要我们实现的底层接口;
2.2 实现SPI接口的SD读写在src目录下新建spi_sd.h 和 spi_sd.c 文件,现在目录结构如下:
spi_sd.h 头文 ...
STM32G0开发笔记-Platformio+libopencm3-SPI接口使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SPI接口的基本使用。
1 SPI配置以下为设置SPI1,引脚映射为PA5\6\7,使用软件控制CS-PA4;
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354/* Enable SPI1 Periph and gpio clocks */ rcc_periph_clock_enable(RCC_SPI1); rcc_periph_clock_enable(RCC_GPIOA); /* Configure GPIOs: * * SCK=PA5 * MOSI=PA7 * MISO=PA6 * * for SD card * SDCS PA4 *///MOSI & SCK & MISOgpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE,GPIO5|GPIO7|G ...
STM32G0开发笔记-Platformio+libopencm3-按键和外部中断
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为GPIO接按键的使用方式。
1 新建项目
在PIO主页新建项目button,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
新建完成后在src目录新建主程序文件main.c;
然后更改项目文件platformio.ini的烧写和调试方式:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 轮询方式使用按键
设置GPIO为输入模式
12//set gpio input buttongpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO11);
获取按键输入状态
123456while (1){ if(gpio_get(GPIOC,GPIO11)){ gpio_toggle(GPIOC,GPIO12); } }
使用gpio_get获取按键的状态;
3 外 ...
STM32G0开发笔记-Platformio+libopencm3-定时器使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为定时器timer的基本使用方法。
1 新建项目
在PIO主页新建项目timer,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
新建完成后在src目录新建主程序文件main.c;
然后更改项目文件platformio.ini的烧写和调试方式:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 使用基本定时器
定时器设置
以下为设置定时器3的过程:
12345678910111213141516171819202122232425262728293031323334static void timer_setup(void){ /* Enable TIM3 clock. */ rcc_periph_clock_enable(RCC_TIM3); /* Enable TIM3 interrupt. */ nvic_enable_irq(NVIC_TIM3_IRQ); /* Timer gl ...
STM32G0开发笔记-Platformio+libopencm3-FreeRTOS基本使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统。
1 新建项目
在PIO主页新建项目,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
新建完成后在src目录新建主程序文件main.c;
然后更改项目文件platformio.ini的烧写和调试方式:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 添加FreeRTOS源码
下载FreeRTOS源码
在freertos网站:https://www.freertos.org/a00104.html 下载好源码,这里下载最新版202112.00;
添加源码到项目:
直接拷贝源码下的FreeRTOS文件夹到项目的lib目录中;
添加到项目编译
在lib目录的FreeRTOS文件夹下新建 library.json 文件,内容如下:
1234567891011121314151617{ "name": "FreeRTOS&quo ...
STM32G0开发笔记-Platformio+libopencm3-串口中断
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为串口中断的使用。
1 新建项目
建立uart项目
在PIO的Home页面新建项目,项目名称uart,选择开发板为上一次建立的自定义开发板型号 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序
时钟设置
123456//system clockrcc_clock_setup(&rcc_clock_config[RCC_CLOCK_CONFIG_HSI_PLL_64MHZ]);//uart pinrcc_periph_clock_enable(RCC_USART1);rcc_periph_clock_enable(RCC_GPIOB);
先设置系统时钟为内部PLL生成64MHz ...
STM32G0开发笔记-Platformio+libopencm3-看门狗WDT使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为看门狗的使用。
1 新建项目
建立wdt项目
在PIO的Home页面新建项目,项目名称wdt,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序2.1 看门狗基本使用方法
设置看门狗周期
1iwdg_set_period_ms(600);
比如设置600ms周期;最大为32768ms;
使能看门狗
1iwdg_start();
一般在初始化工作都完成后开始启动看门狗;
在看门狗周期内进行喂狗
1iwdg_reset();
这个函数必须保证在看门狗周期内进行执行,如上面设置周期为600,这个函数就必须在600ms之内调用,如每500ms调用一次;
2.2 使 ...
STM32G0开发笔记-Platformio+libopencm3-LED灯
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为LED灯示例。
1 新建项目在PIO的Home页面新建项目,项目名称led,选择开发板为上一次建立的自定义开发板型号 MonkeyPi_STM32_G070RB,开发框架选择libopencm3:
2 LED灯程序在项目文件夹的src目录下新建文件main.c,内容如下:
123456789101112131415161718192021222324252627282930313233343536373839404142/** * @file main.c * @author MakerInChina (makerinchina.cn) * @brief * @version 0.01 * @date 2022-09-04 * * @copyright Copyright (c) 2022 * */#include <libopencm3/stm32/rcc.h>#include <libopencm3/stm32/gpio.h>#define LED_GPI ...
STM32G0开发笔记-Platformio平台下使用libopencm3库
使用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文件,修改后如下:
12345678910111213141516171819202 ...