泉州专门制作网站,河南信阳网站建设公司电话,免费企业网站cms系统,wordpress用户管理插件文章目录实现功能#xff1a;项目展示#xff1a;代码解析#xff1a;实现功能#xff1a;
1.主要功能#xff1a;通过485通信获取传感器温湿度#xff0c;温湿度数据显示、实时时钟显示与用户交互。使用LVGL在显示屏上展示传感器温湿度数据#xff0c;并提供UI设置温度…
文章目录实现功能项目展示代码解析实现功能
1.主要功能通过485通信获取传感器温湿度温湿度数据显示、实时时钟显示与用户交互。使用LVGL在显示屏上展示传感器温湿度数据并提供UI设置温度、湿度的阈值和映射关系并提供字体颜色切换 2.运行指示系统运行时绿灯闪烁超出阈值红灯闪烁蜂鸣器长鸣 3.红外遥控通过红外接收模块接收用户指令并控制UI 4.FLASH存储将用户配置阈值、字体颜色保存在STM32F407ZGT6内部FLASH并在开机时读取 5.数据存储与导出按下保存按键时保存实时温湿度数据CSV文件并可以通过菜单栏导出数据 6.本地升级IAP本地升级、U盘升级 7.菜单功能时间设置U盘导出数据 8.按键功能KEY_UP菜单键KEY0切换键KEY1确认键 9.5分钟更新一次天气 10.图标地址icon
项目展示 代码解析
#include main.hFATFS fs;//任务句柄
TaskHandle_t vTaskLed_handle;
//任务函数
void vTaskLed(void *pvParameters);//任务句柄
TaskHandle_t vTaskDisplay_handle;
//任务函数
void vTaskDisplay(void *pvParameters);//任务句柄
TaskHandle_t vTaskSensor_handle;
//任务函数
void vTaskSensor(void *pvParameters);void Hardware_Init(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); /* 设置系统中断优先级分组4 */delay_init(); /* 延时初始化 */usart3_init(115200); /* 初始化ESP8266串口3 */LED_Init();LCD_Init(); /* LCD初始化 */My_RTC_Init(); /* RTC初始化 */ RS485_Init(9600); /* 初始化RS485串口2 */ SD_Init(); /* SD卡初始化 */f_mount(fs,0:,1); /* 挂载SD卡 */Display_Main();atk_8266_wifista_config();get_current_weather();delay_xms(500);get_3days_weather();delay_xms(500);get_beijing_time();
}int main(void)
{/* 硬件初始化 */Hardware_Init();/* 创建app_task1任务 */xTaskCreate((TaskFunction_t )vTaskLed, /* 任务入口函数 */(const char* )vTaskLed, /* 任务名字 */(uint16_t )256, /* 任务栈大小 */(void* )NULL, /* 任务入口函数参数 */(UBaseType_t )1, /* 任务的优先级 */(TaskHandle_t* )vTaskLed_handle); /* 任务控制块指针 */ /* 创建app_task2任务 */ xTaskCreate((TaskFunction_t )vTaskDisplay, /* 任务入口函数 */(const char* )vTaskDisplay, /* 任务名字 */(uint16_t )256, /* 任务栈大小 */(void* )NULL, /* 任务入口函数参数 */(UBaseType_t )2, /* 任务的优先级 */(TaskHandle_t* )vTaskDisplay_handle); /* 任务控制块指针 */ /* 创建app_task2任务 */ xTaskCreate((TaskFunction_t )vTaskSensor, /* 任务入口函数 */(const char* )vTaskSensor, /* 任务名字 */(uint16_t )256, /* 任务栈大小 */(void* )NULL, /* 任务入口函数参数 */(UBaseType_t )3, /* 任务的优先级 */(TaskHandle_t* )vTaskSensor_handle); /* 任务控制块指针 */ /* 开启任务调度 */vTaskStartScheduler(); while(1);}/* 任务1LED 闪烁优先级1 */
static void vTaskLed(void *pvParameters)
{while(1){if(Update_Flag 1){get_current_weather();vTaskDelay(200);get_3days_weather();Update_Flag 0; }LED1~LED1;vTaskDelay(200);}
}
/* 任务2显示温湿度优先级2 */
static void vTaskDisplay(void *pvParameters)
{while(1){Display_TempHumi_Value();RTC_Show();vTaskDelay(200);}
}
/* 任务3485获取温湿度优先级3 */
static void vTaskSensor(void *pvParameters)
{while(1){Get_TempHumi_Value();vTaskDelay(200);}
}