210 lines
6.7 KiB
C
210 lines
6.7 KiB
C
|
|
/* USER CODE BEGIN Header */
|
|||
|
|
/**
|
|||
|
|
******************************************************************************
|
|||
|
|
* @file fm33lg0xx_fl_it.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>© 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 "fm33lg0xx_fl_it.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
CycleTask task_state = TASK_1_ADC;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void BSTIM_IRQHandler(void)
|
|||
|
|
{
|
|||
|
|
if(FL_BSTIM32_IsEnabledIT_Update(BSTIM32) && FL_BSTIM32_IsActiveFlag_Update(BSTIM32))
|
|||
|
|
{
|
|||
|
|
FL_BSTIM32_ClearFlag_Update(BSTIM32);
|
|||
|
|
|
|||
|
|
/* ִ<><D6B4>1msִ<73><D6B4>һ<EFBFBD>ε<EFBFBD><CEB5>жϺ<D0B6><CFBA><EFBFBD> */
|
|||
|
|
main_task_20ms();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>Ϊ5<CEAA>Σ<EFBFBD>ÿ<EFBFBD>η<EFBFBD>20ms<6D><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ100ms
|
|||
|
|
void main_task_20ms(void)
|
|||
|
|
{
|
|||
|
|
static uint32_t main_start_delay4s = 0;
|
|||
|
|
MsgQueueItem stm_item;
|
|||
|
|
uint8_t net_code = 0;
|
|||
|
|
peek_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, &stm_item);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD>ǰ״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬
|
|||
|
|
if(main_start_delay4s < 200) // <20><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4S<34><53><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
main_start_delay4s++;
|
|||
|
|
if(main_start_delay4s <= 70)
|
|||
|
|
{
|
|||
|
|
// <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>Main<69>н<EFBFBD><D0BD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
|
|||
|
|
}else{
|
|||
|
|
ALARM_YELLOW_OFF;
|
|||
|
|
ui.alarm_led_show = 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}else if(stm_item.data.state_machine.oxg_stm == STM_INIT){
|
|||
|
|
|
|||
|
|
stm_item.data.state_machine.oxg_stm = STM_NOM; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD>ʼ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
|||
|
|
|
|||
|
|
modify_or_add_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, stm_item);
|
|||
|
|
|
|||
|
|
}else{
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Уģʽ
|
|||
|
|
net_code = ~((FL_GPIO_ReadInputPort(NET_CODE_GPIO_PORT) >> 8)|0xF0);
|
|||
|
|
|
|||
|
|
if (net_code == NETCODE_E1_CALIB || net_code == NETCODE_E2_CALIB ||
|
|||
|
|
net_code == NETCODE_E4_CALIB || net_code == NETCODE_E7_CALIB)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>뵽<EFBFBD>궨ģʽ ֻ<><EFBFBD><DEB8><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б궨
|
|||
|
|
stm_item.data.state_machine.oxg_stm = STM_CARLIB;
|
|||
|
|
stm_item.data.state_machine.data = net_code;
|
|||
|
|
modify_or_add_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, stm_item);
|
|||
|
|
|
|||
|
|
}else if(net_code == NETCODE_PRESS || net_code == NETCODE_O2 ||
|
|||
|
|
net_code == NETCODE_TEMP_PRESS || net_code == NETCODE_ELEC)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>뵽<EFBFBD><EBB5BD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֻ<><EFBFBD><DEB8><EFBFBD>ʾ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
stm_item.data.state_machine.oxg_stm = STM_DEBUG;
|
|||
|
|
stm_item.data.state_machine.data = net_code;
|
|||
|
|
modify_or_add_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, stm_item);
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckAnyBits(&global_event, FAULT_MASK_ERROR_SHOUNTDOWN))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
stm_item.data.state_machine.oxg_stm = STM_ERROR_SHOUNTDOWN;
|
|||
|
|
stm_item.data.state_machine.data = ulOxygenEventGroupGetFaultByMask(&global_event, FAULT_MASK_ERROR_SHOUNTDOWN);
|
|||
|
|
|
|||
|
|
modify_or_add_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, stm_item);
|
|||
|
|
|
|||
|
|
}else if(xOxygenEventGroupCheckAnyBits(&global_event, FAULT_MASK_ERROR_NONE_STOP))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
stm_item.data.state_machine.oxg_stm = STM_ERROR_NONE_STOP;
|
|||
|
|
stm_item.data.state_machine.data = ulOxygenEventGroupGetFaultByMask(&global_event, FAULT_MASK_ERROR_NONE_STOP);
|
|||
|
|
|
|||
|
|
modify_or_add_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, stm_item);
|
|||
|
|
|
|||
|
|
|
|||
|
|
}else{
|
|||
|
|
|
|||
|
|
stm_item.data.state_machine.oxg_stm = STM_NOM;
|
|||
|
|
modify_or_add_queue_node_by_type(&global_queue, MSG_TYPE_OXG_STM, stm_item);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
compressor_valve_task(); // <20><><EFBFBD>ŷ<EFBFBD><C5B7>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
switch(task_state)
|
|||
|
|
{
|
|||
|
|
case TASK_1_ADC:
|
|||
|
|
task_state++;
|
|||
|
|
sample_adc_process_task(); // <20>Ķ<DEB8><C4B6><EFBFBD><EFBFBD>е<EFBFBD>ADC<44><43><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
bs83b12_touch_read_task();
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TASK_2_LED: // LED<45><44>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>
|
|||
|
|
task_state++;
|
|||
|
|
|
|||
|
|
led_blink_task();
|
|||
|
|
oxg_sensor_task(); // ÿ<><C3BF>100ms<6D><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ũ<EFBFBD><C5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TASK_3_ALARM:
|
|||
|
|
task_state++;
|
|||
|
|
|
|||
|
|
fault_process_task();
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TASK_4_SCREEN:
|
|||
|
|
task_state++;
|
|||
|
|
|
|||
|
|
ht16k33_refresh_task(); // <20><>ʾ<EFBFBD><CABE>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case TASK_5_TIME:
|
|||
|
|
task_state = TASK_1_ADC;
|
|||
|
|
|
|||
|
|
total_time_record_task(); // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>
|
|||
|
|
eeprom_ht24lc02_save_task(&global_queue); // <20>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
task_state = TASK_1_ADC;
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/************************ (C) COPYRIGHT FMSH *****END OF FILE****/
|