在智能健康助手项目中,软件部分是整个系统的核心,包括外设控制、操作系统管理、图形界面交互等功能。本文将对软件部分进行整体介绍,并划分为三个主要模块: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篇)