|
|
@ -41,17 +41,13 @@ static bool pwm_modble_enable_falg; //Ӳ |
|
|
|
/*********************************************************************************************************************** |
|
|
|
* =======================================================HOOK======================================================== * |
|
|
|
***********************************************************************************************************************/ |
|
|
|
void HOOK_pwm_module_set_pwm_duty(uint32_t frequency, uint32_t duty) { |
|
|
|
set_pwm_modbul_freq_duty(frequency, duty); |
|
|
|
port_fan_set(true); //打开风扇 |
|
|
|
void HOOK_pwm_module_set_pwm_duty(uint32_t frequencyhz, uint32_t duty) { |
|
|
|
set_pwm_modbul_freq_duty(frequencyhz, duty); |
|
|
|
pwm_modble_enable_falg = true; |
|
|
|
printf("work\r\n"); |
|
|
|
} |
|
|
|
void HOOK_pwm_stop(void) { |
|
|
|
set_pwm_modbul_freq_duty(1, 0); //关闭PWM输出 |
|
|
|
port_fan_set(false); //风扇结束工作 |
|
|
|
set_pwm_modbul_freq_duty(1000, 0); //关闭PWM输出 |
|
|
|
pwm_modble_enable_falg = false; |
|
|
|
printf("rest\r\n"); |
|
|
|
} |
|
|
|
bool HOOK_pwm_is_enable(void) { return pwm_modble_enable_falg; } |
|
|
|
int hook_get_autoshutdown_timecount() { return g_auto_shutdown_countdown_s; } |
|
|
@ -84,9 +80,9 @@ void update_ozone_work_level(bool interval_work, WORK_LEVEL_T level) { |
|
|
|
} |
|
|
|
|
|
|
|
if (interval_work) { |
|
|
|
ozone_pwm_control_module_set_pwm_output_2(1, 0, INTERVAL_WORK_PERIOD_MS,INTERVAL_WORK_DUTY); |
|
|
|
ozone_pwm_control_module_set_pwm_output_2(1000, duty, INTERVAL_WORK_PERIOD_MS, INTERVAL_WORK_DUTY); |
|
|
|
} else { |
|
|
|
set_pwm_modbul_freq_duty(1, duty); |
|
|
|
set_pwm_modbul_freq_duty(1000, duty); |
|
|
|
} |
|
|
|
light_module_set_rgb_mode(lightmode); |
|
|
|
light_module_set_rgb_flicker_mode(interval_work); |
|
|
@ -103,6 +99,7 @@ void shutdown(void) { |
|
|
|
g_auto_shutdown_countdown_s = 0; |
|
|
|
|
|
|
|
update_ozone_work_level(false, WORK_LEVEL_CLOSE); |
|
|
|
|
|
|
|
port_fan_set(false); //关闭风扇 |
|
|
|
light_module_close_all_light(); |
|
|
|
} |
|
|
@ -184,18 +181,28 @@ void onkey(zkey_t *key, zkey_state_t key_state) { |
|
|
|
if (!g_auto_shutdown_flag) { |
|
|
|
g_auto_shutdown_flag = true; |
|
|
|
g_auto_shutdown_countdown_s = 0; |
|
|
|
light_module_set_autoshutdown_indicator_light(true); |
|
|
|
} |
|
|
|
g_auto_shutdown_countdown_s += AUTO_SHUTDOWN_ONE_LIGHT_EQ_TIME_S; |
|
|
|
if (g_auto_shutdown_countdown_s > AUTO_SHUTDOWN_ONE_LIGHT_EQ_TIME_S * 4) { |
|
|
|
g_auto_shutdown_countdown_s = 0; |
|
|
|
g_auto_shutdown_flag = false; |
|
|
|
light_module_set_autoshutdown_indicator_light(false); |
|
|
|
} |
|
|
|
|
|
|
|
} else if (key == &s_keys[1] && key->cur_state == zks_falling_edge) { |
|
|
|
/** |
|
|
|
* @brief 处理等级按键 |
|
|
|
*/ |
|
|
|
printf("process key[1] event\r\n"); |
|
|
|
if (g_setting_level == WORK_LEVEL_HIGHT) { |
|
|
|
g_setting_level = WORK_LEVEL_LOW; |
|
|
|
update_ozone_work_level(g_setting_interval_work_flag, WORK_LEVEL_LOW); |
|
|
|
} else if (g_setting_level == WORK_LEVEL_MIDDLE) { |
|
|
|
g_setting_level = WORK_LEVEL_HIGHT; |
|
|
|
update_ozone_work_level(g_setting_interval_work_flag, WORK_LEVEL_HIGHT); |
|
|
|
} else if (g_setting_level == WORK_LEVEL_LOW) { |
|
|
|
g_setting_level = WORK_LEVEL_MIDDLE; |
|
|
|
update_ozone_work_level(g_setting_interval_work_flag, WORK_LEVEL_MIDDLE); |
|
|
|
} |
|
|
|
} else if (key == &s_keys[2] && key->cur_state == zks_falling_edge) { |
|
|
@ -213,6 +220,16 @@ void onkey(zkey_t *key, zkey_state_t key_state) { |
|
|
|
shutdown(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#define DO_IT_EACH_MS(time) \ |
|
|
|
{ \ |
|
|
|
static uint32_t __ticket = 0; \ |
|
|
|
if (port_haspassedms(__ticket) > time) { \ |
|
|
|
__ticket = get_sys_ticket(); |
|
|
|
|
|
|
|
#define END() \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
/*********************************************************************************************************************** |
|
|
|
* ======================================================主函数======================================================= |
|
|
|
***********************************************************************************************************************/ |
|
|
@ -226,7 +243,6 @@ int main(void) { |
|
|
|
unused_gpio_init(); |
|
|
|
gpio_init(); |
|
|
|
uart0_init(); |
|
|
|
t16_pa4_init(); |
|
|
|
|
|
|
|
//模块初始化 |
|
|
|
zkey_init(&key_module); |
|
|
@ -241,18 +257,17 @@ int main(void) { |
|
|
|
/******************************************************************************************************************* |
|
|
|
* ==================================================调试指示灯=================================================== * |
|
|
|
*******************************************************************************************************************/ |
|
|
|
port_do_debug_light_state(); |
|
|
|
|
|
|
|
DO_IT_EACH_MS(200) { |
|
|
|
static uint8_t debug_led_state = 1; |
|
|
|
debug_led_state = !debug_led_state; |
|
|
|
port_debug_set(debug_led_state); |
|
|
|
} |
|
|
|
END() |
|
|
|
/*********************************************************************************************************************** |
|
|
|
* =================================================按键模块调度代码================================================== * |
|
|
|
***********************************************************************************************************************/ |
|
|
|
{ |
|
|
|
static uint32_t keylastprocess = 0; |
|
|
|
if (port_haspassedms(keylastprocess) > KEY_PERIOD) { |
|
|
|
keylastprocess = get_sys_ticket(); |
|
|
|
zkey_do_loop_in_each_period(NULL); |
|
|
|
} |
|
|
|
} |
|
|
|
DO_IT_EACH_MS(KEY_PERIOD) { zkey_do_loop_in_each_period(NULL); } |
|
|
|
END(); |
|
|
|
/*********************************************************************************************************************** |
|
|
|
* ===============================================灯光控制模块调度代码================================================ * |
|
|
|
***********************************************************************************************************************/ |
|
|
@ -267,14 +282,11 @@ int main(void) { |
|
|
|
* ===================================================自动关机逻辑==================================================== * |
|
|
|
***********************************************************************************************************************/ |
|
|
|
// |
|
|
|
if (g_power_flag && g_auto_shutdown_flag) { |
|
|
|
static uint32_t ticket = 0; |
|
|
|
ticket = get_sys_ticket(); |
|
|
|
// |
|
|
|
if (port_haspassedms(ticket) > 1000) { |
|
|
|
ticket = get_sys_ticket(); |
|
|
|
DO_IT_EACH_MS(1000) { |
|
|
|
if (g_power_flag && g_auto_shutdown_flag) { |
|
|
|
if (g_auto_shutdown_countdown_s > 0) { |
|
|
|
g_auto_shutdown_countdown_s -= 1; |
|
|
|
printf("auto shutdown countdown %d\n", g_auto_shutdown_countdown_s); |
|
|
|
} else { |
|
|
|
g_auto_shutdown_flag = false; |
|
|
|
/** |
|
|
@ -283,24 +295,20 @@ int main(void) { |
|
|
|
shutdown(); |
|
|
|
} |
|
|
|
} |
|
|
|
// |
|
|
|
} |
|
|
|
END(); |
|
|
|
/*********************************************************************************************************************** |
|
|
|
* ===================================================异常监控逻辑==================================================== |
|
|
|
***********************************************************************************************************************/ |
|
|
|
{ |
|
|
|
static uint32_t ticket = 0; |
|
|
|
if (port_haspassedms(ticket) > EXCEPTION_CHECK_PERIOD) { |
|
|
|
ticket = get_sys_ticket(); |
|
|
|
|
|
|
|
/** |
|
|
|
* @brief |
|
|
|
* 这里检测ADC的数值是否超出规定范围 |
|
|
|
*/ |
|
|
|
if (false) { |
|
|
|
} |
|
|
|
DO_IT_EACH_MS(EXCEPTION_CHECK_PERIOD) { |
|
|
|
/** |
|
|
|
* @brief |
|
|
|
* 这里检测ADC的数值是否超出规定范围 |
|
|
|
*/ |
|
|
|
if (false) { |
|
|
|
} |
|
|
|
} |
|
|
|
END(); |
|
|
|
// End.................................. |
|
|
|
} |
|
|
|
} |