STM32G0开发笔记-Platformio+libopencm3-FreeRTOS和FreeModbus库使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和FreeModbus库使用。
1 新建项目
建立freertos_modbus项目
在PIO的Home页面新建项目,项目名称freertos_modbus,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序直接在之前的FreeRTOS工程上进行添加;
2.1 添加 freeModbus 库从git仓库下载源码: https://github.com/cwalter-at/freemodbus
将下载的源码中的mobus文件夹放置到工程的lib目录下,然后在modbus目录新建library.json文件,内容如下:
12345678910111213141 ...
STM32G0开发笔记-Platformio+libopencm3-FreeRTOS和CLI组件使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和CLI组件使用。
1 新建项目
建立freertos_cli项目
在PIO的Home页面新建项目,项目名称freertos_cli,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序直接在之前的文章-FreeRTOS基本使用基础上进行添加,在项目中添加好FreeRTOS源码后,再将FreeRTOS源码中的 FreeRTOS-Plus\Source\FreeRTOS-Plus-CLI 目录放置到项目lib目录下,目录如下:
2.1 串口设置123456789101112131415161718192021222324252627282930313233 ...
STM32G0开发笔记-Platformio+libopencm3-EEPROM M24C02使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为EEPROM M24C02的使用方法。
1 新建项目
建立eeprom项目
在PIO的Home页面新建项目,项目名称eeprom,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序首先从之前的I2C项目中拷贝sw_i2c库文件夹到当前项目的lib目录下:
本次不使用串口打印,直接使用SEGGER rtt打印,因此将SEGGER RTT也放置在lib目录下,便于调试打印:
1234567void log(const char* fmt, ...){ va_list va; va_start(va, fmt); SEGGER_RTT_vprin ...
STM32G0开发笔记-Platformio+libopencm3-NTC温度采集
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下使用ADC进行NTC温度采集。
1 新建项目
建立ntc_temp项目
在PIO的Home页面新建项目,项目名称ntc_temp,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
为了能使用printf的浮点功能,可以加入如下配置:
12build_flags = -Wl,-u,_printf_float
2 编写程序2.1 ADC设置123456789101112131415161718192021void adc_setup(){ rcc_periph_clock_enable(RCC_GPIOA); rcc_periph_clock_enable ...
STM32G0开发笔记-Platformio+libopencm3-多通道ADC与DMA使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为多通道ADC与DMA的使用。
1 新建项目
建立adc_dma项目
在PIO的Home页面新建项目,项目名称adc_dma,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序2.1 ADC 设置这里设置PA0、PA1、PA2、PA3四个引脚为ADC:
1234567891011121314151617181920212223242526272829static void adc_setup(void){ rcc_periph_clock_enable(RCC_ADC); rcc_periph_clock_enable(RCC_GPIOA); gp ...
STM32G0开发笔记-Platformio+libopencm3-ADC使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为ADC的基本使用。
1 新建项目
建立adc项目
在PIO的Home页面新建项目,项目名称adc,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 编写程序2.1 ADC配置这里配置PA0引脚为ADC输入,为ADC_IN0通道,设置如下:
123456789101112131415161718192021void adc_setup(){ rcc_periph_clock_enable(RCC_GPIOA); rcc_periph_clock_enable(RCC_ADC); gpio_mode_setup(GPIOA,GPIO_MODE_ANALOG, ...
STM32G0开发笔记-Platformio+libopencm3-I2C接口软件模拟与GXHT30温湿度模块
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下使用软件模拟I2C总线时序,并用它来读取GXHT30温湿度数据。
1 新建项目
建立gxht30项目
在PIO的Home页面新建项目,项目名称gxht30,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;
项目建立完成后在src目录下新建main.c主程序文件;
修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 I2C软件模拟2.1 文件结构在lib目录新建 sw_i2c 文件夹,并新建如下文件:
2.2 sw_i2c_port.h 与底层IO读写相关1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162/** ...
STM32G0开发笔记-Platformio+libopencm3-FreeRTOS和队列Queue使用
使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统的队列Queue。
1 新建项目
在PIO主页新建项目,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB;
新建完成后在src目录新建主程序文件main.c;
然后更改项目文件platformio.ini的烧写和调试方式:
12upload_protocol = cmsis-dapdebug_tool = cmsis-dap
2 添加FreeRTOS库将上一节工程中的FreeRTOS目录直接拷贝到当前工程的lib目录下即可,添加完成后重新打开项目,以便VSCode获取代码索引;
3 在FreeRTOS中使用Queue这里将串口接收的数据存放到队列中,然后在其他任务中可以取出来进行打印显示;
创建队列
1234xQueueHandle uart_queue;//create queue uart_queue = xQueueCreate(16, sizeof(char));
使用 xQueueCreate 接口创建队列,上面为创 ...
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 头文 ...