current_v/Src/ht16k33_dot_matrix.c

562 lines
18 KiB
C
Raw Normal View History

2025-12-31 08:21:43 +08:00
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file ht16k33_dot_matrix.c
* @author Motor Control SDK Team, Yuwell Software XiangenWang
* @brief Voice Recognition Module Initialization Section,
including peripheral initialization and message node insertion, etc.
* @version 1.0
* @changelog version 1.0 <EFBFBD><EFBFBD>ʼ<EFBFBD> 2025.11.13
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD>
******************************************************************************
* @attention
*
* <h2><center>&copy; Copyright (c) 2025 Yuwell Software Danyang.Jiangsu.China.
* All rights reserved.</center></h2>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted, provided that the following conditions are met:
*
* 1. Redistribution of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of Yuwell Software nor the names of other
* contributors to this software may be used to endorse or promote products
* derived from this software without specific written permission.
* 4. This software, including modifications and/or derivative works of this
* software, must execute solely and exclusively on microcontroller or
* microprocessor devices manufactured by or for Yuwell Software.
* 5. Redistribution and use of this software other than as permitted under
* this license is void and will automatically terminate your rights under
* this license.
*
* THIS SOFTWARE IS PROVIDED BY Yuwell Software AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
* RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
* SHALL Yuwell Software OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
/* USER CODE END Header */
#include "ht16k33_dot_matrix.h"
UIElements ui;
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĻUI<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>
* @param p_ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2. <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ָʾ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>(0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>(0)
* 3. <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾģʽΪ<EFBFBD><EFBFBD>ʱģʽ(DISPLAY_MODE_TIMER)
* 4. <EFBFBD><EFBFBD>Ũ<EFBFBD>ȳ<EFBFBD>ʼֵ<EFBFBD><EFBFBD>Ϊ210<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʾ21.0%<EFBFBD><EFBFBD>
* 5. <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD>
* @author jarvis
* @date 2025.11.25
*/
void ht16k33_ui_init(UIElements* p_ui)
{
FL_GPIO_InitTypeDef GPIO_InitStruct;
MsgQueueItem queue_item;
bool result = false;
if (p_ui == NULL)
{
return; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
// ָʾ<D6B8><CABE>Ĭ<EFBFBD><C4AC>״̬
p_ui->ok_led_show = 1;
p_ui->alarm_led_show = 0;
p_ui->clean_filter_show = 0;
p_ui->replace_box_show = 0;
// <20><>ʾģʽĬ<CABD><C4AC>ֵ
p_ui->disp_info.oxygen_val = 210; // <20><>Ũ<EFBFBD>ȳ<EFBFBD>ʼ21.0%<25><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
GPIO_InitStruct.pin = HT16K33_SDA_GPIO_PIN;
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_DISABLE;
GPIO_InitStruct.analogSwitch = FL_DISABLE;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_OPENDRAIN;
FL_GPIO_Init(HT16K33_SDA_GPIO_GROUP, &GPIO_InitStruct); // <20><>ʼ<EFBFBD><CABC>SDA<44><41><EFBFBD><EFBFBD>
GPIO_InitStruct.pin = HT16K33_SCL_GPIO_PIN;
GPIO_InitStruct.pull = FL_ENABLE;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
FL_GPIO_Init(HT16K33_SCL_GPIO_GROUP, &GPIO_InitStruct); // <20><>ʼ<EFBFBD><CABC>SCL<43><4C><EFBFBD><EFBFBD>
ht16k33_chip_init();
ht16k33_send_buffer(ht16k33_disp_buff); // <20><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>Ƶ<EFBFBD><C6B5>Դ棨<D4B4><E6A3A8><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ִ<EFBFBD>У<EFBFBD>
if(global_queue.length != 0)
{
result = remove_queue_node_by_type(&global_queue, MSG_TYPE_TIME_SEND, &queue_item); // ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
if(result == true)
{
ui.disp_info.work_hours = queue_item.data.hour_meter.hour;
ui.disp_info.work_minutes = queue_item.data.hour_meter.minute;
}
}
}
/**
* @brief <EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
* @param first_value - <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @param first_index - <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>
* @param second_value - <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
* @param second_index - <EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. ÿ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ʾ2<EFBFBD>ͨ<EFBFBD><EFBFBD>show_switch_count<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ100ms<EFBFBD><EFBFBD>
* 2. ʹ<EFBFBD>þ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ʾ״̬<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 3. <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʮλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
* @author wxe
* @date 2025.11.25
*/
static void switch_show_2_num(uint16_t first_value, uint16_t first_index, uint16_t second_value, uint16_t second_index)
{
static uint16_t show_switch_count = 20;
static uint16_t show_mode_record = 1;
if(show_switch_count >= 20) // ÿ<><C3BF>״̬<D7B4><CCAC>ʾ2s
{
show_switch_count = 0;
if(show_mode_record)
{
show_mode_record = 0;
ui.disp_info.seg_index.fourth_8_index = first_value % 10;
ui.disp_info.seg_index.third_8_index = (first_value / 10) % 10;
ui.disp_info.seg_index.second_8_index = (first_value / 100) % 10;
ui.disp_info.seg_index.first_8_index = first_index;
}else{
show_mode_record = 1;
ui.disp_info.seg_index.fourth_8_index = second_value % 10;
ui.disp_info.seg_index.third_8_index = (second_value / 10) % 10;
ui.disp_info.seg_index.second_8_index = (second_value / 100) % 10;
ui.disp_info.seg_index.first_8_index = second_index;
}
}else{
show_switch_count++;
}
}
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_INIT״̬<EFBFBD><EFBFBD>
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. <EFBFBD><EFBFBD>ʼ״̬<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>OK<EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱСʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ǧλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ʮλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* 3. <EFBFBD><EFBFBD>λΪ0ʱ<EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Чλ<EFBFBD><EFBFBD>
* @author wxe
* @date 2025.11.25
*/
static void on_stm_init_ui_refresh(UIElements* ui)
{
// <20><>ʼ״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
ui->total_time_chn = 1;
ui->oxg_concentration_chn = 0;
ui->replace_box_show = 0;
ui->clean_filter_show = 0;
// ui->alarm_led_show = 0; // <20>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>it<69>ļ<EFBFBD><C4BC>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
// <20><>ʾok<6F><6B>
ui->ok_led_show = 1;
// <20><>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0>ʱ
uint8_t wh_ten_thou, wh_thou, wh_hund, wh_ten, wh_unit; // <20><>λ<EFBFBD><CEBB>ǧλ<C7A7><CEBB><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʮλ<CAAE><CEBB><EFBFBD><EFBFBD>λ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><E8B6A8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
wh_ten_thou = (ui->disp_info.work_hours / 10000) % 10; // <20><>λ<EFBFBD><CEBB>12508/10000=1 <20><> 1%10=1
wh_thou = (ui->disp_info.work_hours / 1000) % 10; // ǧλ<C7A7><CEBB>12508/1000=12 <20><> 12%10=2
wh_hund = (ui->disp_info.work_hours / 100) % 10; // <20><>λ<EFBFBD><CEBB>12508/100=125 <20><> 125%10=5
wh_ten = (ui->disp_info.work_hours / 10) % 10; // ʮλ<CAAE><CEBB>12508/10=1250 <20><> 1250%10=0
wh_unit = ui->disp_info.work_hours % 10; // <20><>λ<EFBFBD><CEBB>12508%10=8
if(wh_ten_thou != 0)
{
ui->disp_info.seg_index.num1_is_show = 1;
}else{
ui->disp_info.seg_index.num1_is_show = 0;
}
ui->disp_info.seg_index.first_8_index = wh_thou;
ui->disp_info.seg_index.second_8_index = wh_hund;
ui->disp_info.seg_index.third_8_index = wh_ten;
ui->disp_info.seg_index.fourth_8_index = wh_unit;
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_NOM״̬<EFBFBD><EFBFBD>
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2. <EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>Ũ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>
* 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ϊ<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD>11<EFBFBD><EFBFBD>
* @author wxe
* @date 2025.11.25
*/
static void on_stm_nom_ui_refresh(UIElements* ui)
{
ui->total_time_chn = 0;
ui->oxg_concentration_chn = 1;
MsgQueueItem oxg_item;
// ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
if(peek_queue_node_by_type(&global_queue, MSG_TYPE_OXYGEN_SENSOR, &oxg_item))
{
ui->disp_info.oxygen_val = oxg_item.data.oxygen.concentration;
ui->disp_info.flow_val = oxg_item.data.oxygen.flow_rate;
}
uint8_t o2_hund, o2_ten, o2_unit; // <20><>λ<EFBFBD><CEBB>ʮλ<CAAE><CEBB><EFBFBD><EFBFBD>λ
// <20><><EFBFBD><EFBFBD>Ũ<EFBFBD><C5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
o2_hund = (ui->disp_info.oxygen_val / 100) % 10; // <20><>λ<EFBFBD><CEBB>935/100=9 <20><> 9%10=9
o2_ten = (ui->disp_info.oxygen_val / 10) % 10; // ʮλ<CAAE><CEBB>935/10=93 <20><> 93%10=3
o2_unit = ui->disp_info.oxygen_val % 10; // <20><>λ<EFBFBD><CEBB>935%10=5
ui->disp_info.seg_index.num1_is_show = 0;
ui->disp_info.seg_index.first_8_index = 11;
ui->disp_info.seg_index.second_8_index = o2_hund;
ui->disp_info.seg_index.third_8_index = o2_ten;
ui->disp_info.seg_index.fourth_8_index = o2_unit;
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_ERROR_SHOUNTDOWN/STM_ERROR_NONE_STOP״̬<EFBFBD><EFBFBD>
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. <EFBFBD>ر<EFBFBD>OK<EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>ʱ/<EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>E3>E4>E5>LL>E2>E1>E7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>E3(<EFBFBD>͵<EFBFBD>ѹ)<EFBFBD><EFBFBD>E4(<EFBFBD>ߵ<EFBFBD>ѹ)<EFBFBD><EFBFBD>E5(<EFBFBD>ȸ<EFBFBD>)<EFBFBD><EFBFBD>LL(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>E2(ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>E1(ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>E7(220V<EFBFBD><EFBFBD>)
* 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʾȫ<EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @author wxe
* @date 2025.11.25
*/
static void on_stm_error_ui_refresh(UIElements* ui)
{
// <20><><EFBFBD><EFBFBD>ģʽ
// <20><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><>ֻ<EFBFBD><D6BB><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ߣ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD> E3 > E4 > E5 > LL > E2 > E1 > E7
ui->ok_led_show = 0; // <20>ر<EFBFBD>OK<4F><4B><EFBFBD><EFBFBD>ʾ
ui->total_time_chn = 0;
ui->oxg_concentration_chn = 0;
// <20><>ʾE3
if(xOxygenEventGroupCheckBit(&global_event, EVENT_E3_ELEC_LOW))
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
ui->disp_info.seg_index.fourth_8_index = 3; // <20><>ʾ<EFBFBD><CABE>3<EFBFBD><33>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E4_ELEC_HIGH)) // <20><>ʾE4
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
ui->disp_info.seg_index.fourth_8_index = 4; // <20><>ʾ<EFBFBD><CABE>4<EFBFBD><34>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E5_NTC_HIGH)) // <20><>ʾE5
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
ui->disp_info.seg_index.fourth_8_index = 5; // <20><>ʾ<EFBFBD><CABE>5<EFBFBD><35>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_LL_FLOW_LOW)) // <20><>ʾLL
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 13; // <20><>ʾ<EFBFBD><CABE>L<EFBFBD><4C>
ui->disp_info.seg_index.fourth_8_index = 13; // <20><>ʾ<EFBFBD><CABE>L<EFBFBD><4C>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E2_PRESS_HIGH)) // <20><>ʾE2
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
ui->disp_info.seg_index.fourth_8_index = 2; // <20><>ʾ<EFBFBD><CABE>2<EFBFBD><32>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E1_PRESS_LOW)) // <20><>ʾE1
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
ui->disp_info.seg_index.fourth_8_index = 1; // <20><>ʾ<EFBFBD><CABE>1<EFBFBD><31>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_E7_220V_LOW)) // <20><>ʾE7
{
ui->disp_info.seg_index.first_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.second_8_index = 11; // <20><>ʾ<EFBFBD><CABE> <20><>
ui->disp_info.seg_index.third_8_index = 12; // <20><>ʾ<EFBFBD><CABE>E<EFBFBD><45>
ui->disp_info.seg_index.fourth_8_index = 7; // <20><>ʾ<EFBFBD><CABE>7<EFBFBD><37>
}else if(xOxygenEventGroupCheckBit(&global_event, EVENT_O2_SENSOR_ERROR)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
ui->disp_info.seg_index.first_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
ui->disp_info.seg_index.second_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
ui->disp_info.seg_index.third_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
ui->disp_info.seg_index.fourth_8_index = 10; // <20><>ʾ<EFBFBD><CABE>-<2D><>
}
if(xOxygenEventGroupCheckBit(&global_event, EVENT_BEEP_MUTE))
{
ui->alarm_led_show = 1;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}else{
ui->alarm_led_show = 0;// <20>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
}
}
/**
* @brief У׼/<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>µ<EFBFBD>UIˢ<EFBFBD>£<EFBFBD>STM_CARLIB/STM_DEBUG״̬<EFBFBD><EFBFBD>
* @param ui - UIElements<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. <EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>У׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 3. <EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ͬ<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ֵ+ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD>+<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
* @author wxe
* @date 2025.11.25
*/
static void on_stm_carlib_ui_refresh(UIElements* ui)
{
MsgQueueItem stm_item;
MsgQueueItem adc_item;
MsgQueueItem o2_item;
MsgQueueItem boundary_item;
peek_queue_node_by_type(&global_queue, MSG_TYPE_OXYGEN_SENSOR, &o2_item);
peek_queue_node_by_type(&global_queue, MSG_TYPE_AD_SAMPLING, &adc_item);
peek_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, &stm_item);
peek_queue_node_by_type(&global_queue, MSG_TYPE_AD_BOUNDARY_SEND, &boundary_item);
switch(stm_item.data.state_machine.data)
{
case NETCODE_PRESS:
// <20><>ʾ<EFBFBD><CABE>ǰѹ<C7B0><D1B9>ֵ<EFBFBD><D6B5>ѹ<EFBFBD><D1B9><EFBFBD>ߵ<EFBFBD>
switch_show_2_num(adc_item.data.adc_data.real_press, 14, boundary_item.data.adc_boundary.press_high_boundary, 15);
break;
case NETCODE_O2:
switch_show_2_num(o2_item.data.oxygen.concentration, 16, o2_item.data.oxygen.flow_rate, 17);
break;
case NETCODE_TEMP_PRESS:
switch_show_2_num(adc_item.data.adc_data.real_ntc, 16, adc_item.data.adc_data.real_press, 14);
break;
case NETCODE_ELEC:
switch_show_2_num(adc_item.data.adc_data.real_elec/10, 16, boundary_item.data.adc_boundary.elec_low_boundary/10, 13);
break;
case NETCODE_E1_CALIB:
switch_show_2_num(adc_item.data.adc_data.real_press, 14,boundary_item.data.adc_boundary.press_low_boundary, 13); // 13-L 14-P 15-H 16-C 17-F 18-U 19-A
break;
case NETCODE_E2_CALIB:
switch_show_2_num(adc_item.data.adc_data.real_press, 14, boundary_item.data.adc_boundary.press_high_boundary, 15);
break;
case NETCODE_E4_CALIB:
switch_show_2_num(adc_item.data.adc_data.real_elec/10, 19, boundary_item.data.adc_boundary.elec_high_boundary/10, 15);
break;
case NETCODE_E7_CALIB:
switch_show_2_num(adc_item.data.adc_data.real_220V, 18, boundary_item.data.adc_boundary.net220v_low_boundary, 13);
break;
default:
break;
}
}
/**
* @brief HT16K33<EFBFBD><EFBFBD>Ļˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>+<EFBFBD><EFBFBD>Ļˢ<EFBFBD>£<EFBFBD>
* @param queue - MessageQueue<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ʵ<EFBFBD><EFBFBD>δֱ<EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>global_queue<EFBFBD><EFBFBD>
* @retval NONE
* @note 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ
* 2. <EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>global_queue<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>MSG_TYPE_OXYGEN_SENSOR<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ũ<EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 3. <EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD><EFBFBD>(oxygen_val)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(flow_val)<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ȫ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ui<EFBFBD><EFBFBD>
* 4. <EFBFBD><EFBFBD>Ļˢ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ht16k33_refresh_screen()<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʾ
* 5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ȫ<EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>global_queue<EFBFBD>ѳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSG_TYPE_OXYGEN_SENSOR<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><EFBFBD>
* ȫ<EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD><EFBFBD>ui<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>concentration/flow_rate<EFBFBD>ֶΣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @author wxe
* @date 2025.11.25
*/
void ht16k33_refresh_task(void)
{
MsgQueueItem stm_item;
static uint16_t ok_blink_count = 0;
static uint16_t blue_blink_count = 0;
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ʾģʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵģʽȷ<CABD><C8B7>ui.dispinfo <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
if(peek_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, &stm_item))
{
switch(stm_item.data.state_machine.oxg_stm)
{
case STM_INIT:
on_stm_init_ui_refresh(&ui); // <20><>ʼ4sʱ<73><CAB1><EFBFBD><EFBFBD>ui<75><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>и<EFBFBD><D0B8><EFBFBD>
break;
case STM_NOM:
on_stm_nom_ui_refresh(&ui); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Ũ<EFBFBD><C5A8>
break;
case STM_ERROR_SHOUNTDOWN: // <20><><EFBFBD>ϵ<EFBFBD>ͣ<EFBFBD><CDA3>״̬ʱ
case STM_ERROR_NONE_STOP: // <20><><EFBFBD><EFBFBD>E7<45><37><EFBFBD><EFBFBD> <20><>ʾE7<45><37><EFBFBD>Dz<EFBFBD>ͣ<EFBFBD><CDA3>
on_stm_error_ui_refresh(&ui);
break;
case STM_CARLIB: // <20><><EFBFBD><EFBFBD>ǰΪУ׼״̬
case STM_DEBUG:
on_stm_carlib_ui_refresh(&ui);
break;
default:
break;
}
}else{
return;
}
if(xOxygenEventGroupCheckBit(&global_event, EVENT_REPLACE_FILTER_NOTIFY))
{
ui.replace_box_show = 1;
}else{
ui.replace_box_show = 0;
}
if(xOxygenEventGroupCheckBit(&global_event, EVENT_CLEAN_FILTER_NOTIFY))
{
ui.clean_filter_show = 1;
}else{
ui.clean_filter_show = 0;
}
if(xOxygenEventGroupCheckBit(&global_event, EVENT_OK_BLINK)) // <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>OK<4F><4B><EFBFBD><EFBFBD>˸
{
ok_blink_count++;
if(ok_blink_count % 2 == 0) // ÿ<><C3BF>0.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸һ<EFBFBD><EFBFBD>
{
ui.ok_led_show = !ui.ok_led_show;
}
if(ok_blink_count == 9)
{
ok_blink_count = 0;
vOxygenEventGroupClearBits(&global_event, EVENT_OK_BLINK);
}
}
if(xOxygenEventGroupCheckBit(&global_event, EVENT_BLUE_BLINK))
{
blue_blink_count++;
if(blue_blink_count % 2 == 0) // ÿ<><C3BF>0.2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸һ<EFBFBD><EFBFBD>
{
ui.alarm_led_show = !ui.alarm_led_show;
}
if(blue_blink_count == 9)
{
blue_blink_count = 0;
vOxygenEventGroupClearBits(&global_event, EVENT_BLUE_BLINK);
}
}
ht16k33_refresh_screen(); // ˢ<><CBA2><EFBFBD><EFBFBD>Ļ
}
/************************ (C) COPYRIGHT YUWELL *****END OF FILE****/