LVGL+FreeRTOS实战项目:智能健康助手(软件篇)

简介

        在智能健康助手项目中,软件部分是整个系统的核心,包括外设控制、操作系统管理、图形界面交互等功能。本文将对软件部分进行整体介绍,并划分为三个主要模块:STM32外设部分、FreeRTOS 部分和 LVGL 部分,为后续的详细讲解铺垫。

项目概述

本项目采用 STM32F411CEU6 作为主控,结合 LVGL 图形界面库和 FreeRTOS 实时操作系统,实现智能健康监测与交互功能。系统集成多个传感器(MPU6050、MAX30102、DHT11)和多个模块(蜂鸣器、蓝牙模块),实现了实时数据显示、菜单切换、蓝牙通信等功能。

软件功能

传感器数据采集与处理
支持心率、血氧、温湿度、压力等多种传感器数据的实时采集与处理。
操作系统管理
基于 FreeRTOS 实现任务调度,优化系统资源利用率,确保各功能模块高效运行。
图形界面交互
使用 LVGL 图形库构建丰富的用户界面,直观显示健康数据并提供友好的交互体验。
硬件功能控制
实现蓝牙通信、按键提示音、蜂鸣器提醒等硬件控制功能,提升系统的实用性和可操作性。 

主程序框架分析 

主程序的核心由以下三部分组成:

1、硬件初始化:配置硬件外设,为系统功能提供基础支持。
2、操作系统任务初始化:初始化 FreeRTOS 的任务调度。
3、主循环:进入 FreeRTOS 的任务调度后,主循环仅用于保持程序运行。

主程序代码如下: 

#include "main.h"

// FreeRTOS 提供的系统钩子函数,用于告知 LVGL 每经过 1 毫秒
void vApplicationTickHook() 
{
    lv_tick_inc(1);
}

// 硬件初始化函数
static void Hard_Init(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); // 中断优先级分组
    SystemInit();                                   // 系统初始化
    dwt_delay_init();                               // DWT 延迟初始化
    BEEP_PWM_Init();                                // 蜂鸣器 PWM 初始化
    Blue_Hc05_Init();                               // 蓝牙模块初始化
    EXTI_Key_Config();                              // 外部中断按键配置
    MPU_Init();                                     // MPU6050 初始化
    mpu_dmp_init();                                 // MPU6050 DMP 初始化
    RTC_Config();                                   // 实时时钟初始化
    MAX30102_Init();                                // 心率血氧模块初始化
    XGZP_Init();                                    // 压力传感器初始化
    Lcd_Init();                                     // LCD 屏幕初始化
    Lcd_Clear(0xffff);                              // 清屏
    lv_init();                                      // LVGL 初始化
    lv_port_disp_init();                            // LVGL 显示驱动初始化
    lv_port_indev_init();                           // LVGL 输入设备初始化
    IWDG_Config(IWDG_Prescaler_64, 3125);           // 看门狗配置,5s超时
}

// 主函数
int main(void)
{
    Hard_Init();             // 初始化硬件
    FreeRTOS_Task_Init();    // 初始化 FreeRTOS 任务
    
    while (1)
    {
        // 主循环,保持系统运行
    }
}

软件部分模块化设计


1. 外设部分
外设部分是系统与外界交互的基础,主要包括传感器使用和模块驱动的开发:

传感器:使用 MPU6050(姿态检测)、MAX30102(心率血氧测量)、XGZP6847A(压力检测)、DHT11(温湿度测量)。
模块:包括蜂鸣器(提示音)、蓝牙模块(通信功能)、LCD 屏幕(数据展示)。

在硬件初始化阶段,通过驱动程序对外设进行配置和初始化,确保数据采集的准确性。

2. FreeRTOS 部分
FreeRTOS 是系统的调度核心,用于任务管理和资源分配。项目中主要任务包括:

数据采集任务:周期性读取传感器数据。
数据处理任务:对传感器采集的数据进行滤波和分析。
界面更新任务:定期刷新 LCD 界面以显示最新数据。
系统监控任务:看门狗喂狗,检测任务是否正常运行。

通过 FreeRTOS 实现多任务并发运行,提高系统响应速度和稳定性。

3. LVGL 部分
LVGL 是轻量级的图形界面库,用于构建交互界面。在本项目中,LVGL 主要负责:

数据显示:直观显示心率、血氧、温湿度等健康数据。
菜单切换:用户可以通过按键或触摸切换菜单。
交互功能:界面响应用户输入,提供良好的使用体验。

通过移植 LVGL 到 STM32 平台,并结合硬件驱动,实现高效的 UI 显示和交互。

总结

软件部分是智能健康助手项目的核心,通过模块化设计实现了功能的层次化和逻辑化。外设部分负责数据采集和硬件控制,FreeRTOS 部分管理任务调度和资源分配,LVGL 部分提供了直观的交互界面。后续文章将详细介绍这三个模块的实现细节,文章链接如下:

LVGL+FreeRTOS实战项目:智能健康助手(无源蜂鸣器​​篇)

LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)

LVGL+FreeRTOS实战项目:智能健康助手(mpu6050篇)

LVGL+FreeRTOS实战项目:智能健康助手(xgzp6847a篇)

LVGL+FreeRTOS实战项目:智能健康助手(dht11篇)

LVGL+FreeRTOS实战项目:智能健康助手(Max30102篇)

LVGL+FreeRTOS实战项目:智能健康助手(按键篇)

LVGL+FreeRTOS实战项目:智能健康助手(lcd篇)

LVGL+FreeRTOS实战项目:智能健康助手(FreeRTOS篇)

LVGL+FreeRTOS实战项目:智能健康助手(LVGL篇)

你可能感兴趣的:(stm32,LVGL,freertos)