# 基于stm32f407和gui_guider的物联网系统 **Repository Path**: liu_chang20061124/stm32f407 ## Basic Information - **Project Name**: 基于stm32f407和gui_guider的物联网系统 - **Description**: 本项目模板是基于4.0inch_SPI_Module_ST7796_MSP4030_MSP4031_V1.0液晶屏和stm32f407ZGT6开发板的,引入了lvgl和FreeRTOS。 - **Primary Language**: C - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-16 - **Last Updated**: 2025-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: LVGL, FreeRTOS, GUI, STM32F407 ## README # 基于stm32f407和gui_guider的物联网系统 ## 介绍 本项目是基于stm32f407zgt6 + 4.0inch_SPI_Module_ST7796_MSP4030_MSP4031_V1.0显示屏 + lvgl + gui_guider的物联网控制系统。这里只是一个简单的演示,后续复杂的系统控制便可以在这基础上加以改造。这里主包使用SPI+DMA的方式来刷屏,可惜这个型号的板子最多只能一次性传16bit的数据,像更高级的H系列的板子可以传输32bit,那刷屏速度更快了。简单说明一下,这个液晶屏的命令只能以8bit传输,但是数据可以用16bit或者更高的bit来传输。用本套方案,帧率可以稳在100多帧,最高可达166帧。主包尝试了很多提高刷新率的方法,最终最好的方法就是使用高bit的dma传输。 ## 开发环境 vscode + keil5 + stm32CubeMx ## 接线图 ### tft显示屏接线 CTP_INT ------------------- PG14
CTP_SDA ------------------- PB7
CTP_RST ------------------- PG13
CTP_SCL ------------------- PB6
MISO ------------------- PA6
LED ------------------- PB5
SCK ------------------- PA5
MOSI ------------------- PA7
LCD_RS ------------------- PB4
LCD_RST ------------------- PB3
LCD_CS ------------------- PB8
GND ------------------- GND
VCC ------------------- 5v
### 外设接线 (可加入更多的外设进行检测,主包这里只用了这些 :smile: ) 1. 光敏传感器
AO ------------------- PA1
2. 风扇模块
IN ------------------- PC7
3. 蜂鸣器
I/O ------------------- PB12
4. led灯
信号线 ------------------- PC6
5. heard_led (用于检测lvgl是否在刷屏)
DO ------------------- PF9
6. led (用于其他作用,这里待用)
DO ------------------- PF10
## 开启的通信连接 I2C1 (用于触摸)
SPI1 (用于刷屏)
USART1 (用于调试)
## 定时器 TIM3 ------------------- 开启PWM模式,用于控制灯的亮度和风扇的挡位
TIM6 ------------------- 在CubeMX中加入FreeRTOS后,便不需要这个定时器进行lvgl的计数了,只需在conf.h中改几个宏定义就行了,lvgl的计数就同步与FreeRTOS了
TIM7 ------------------- 用于1s/次的定时中断,ADC的接收和传感器数据的刷新
RTC ------------------- 实时时钟
这里就可能有人问了,主包主包,为什么不用DMA的Circular模式轮询采集数据呢?这里主包曾经试过了,最后发现它抢占了SPI的DMA总线,导致刷屏出现问题,所以这里主包只使用了定时器中断的方式采集数据。
## Analog ADC1 ------------------- IN1
## CubeMX配置截图 ![引脚配置](images/1755320985932.png)
![时钟树](images/1755321036045.png)
![堆栈设置](images/1755321061331.png)