You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "ozone_work.h"
extern uint32_t g_frequency; extern uint32_t g_sys_sick; extern uint32_t g_duty[4]; uint32_t g_ozone_work_time = 0; uint32_t g_ozone_interval_time = 0; uint32_t g_count_down_begin_sys_time = 0; uint32_t g_count_interval_down_begin_sys_time = 0; int ozone_work_state = 0; // 0û�й�����1һֱ������2��ʱ����
bool g_ozone_interva_stat = false; int interval_key_press_frequency = 0; //ÿ����4�ν�����0
int g_ozen_gears = 1; //�ϵ�Ĭ������100%���´�����50%��PWM
static bool switch_key_state = false; //###################### �ߵ͵�������ʼ ################//
void ozone_work_mode(int mode) {
if (ozone_work_state != 2) { ozone_work_state = 1; } port_fan_set(true); switch (mode) { case 0: gears_led_on(0); break; case 1: gears_led_on(1); break; case 2: gears_led_on(2); break; case 3: timing_ozone_work_over(); //��������
break; default: break; } }
void set_ozen_gears(int ozen_gears) { /**
* @brief Construct a new switch object * ����pwm���� */ // printf("g_sys_sick:%d\n", g_sys_sick);
// printf("g_ozone_work_time:%d\n", g_ozone_work_time);
// printf("g_count_down_begin_sys_time:%d\n", g_count_down_begin_sys_time);
switch (ozen_gears) { case 0: set_pwm_frequency_duty(g_frequency, g_duty[0]); g_ozen_gears = 1; printf("pwm g_duty:%d", g_duty[0]); ozone_work_mode(0); break; case 1: set_pwm_frequency_duty(g_frequency, g_duty[1]); g_ozen_gears = 2; printf("pwm g_duty:%d", g_duty[1]); ozone_work_mode(1); break; case 2: set_pwm_frequency_duty(g_frequency, g_duty[2]); // g_ozen_gears = 3;
g_ozen_gears = 0; printf("pwm g_duty:%d", g_duty[2]); ozone_work_mode(2); break; // case 3:
// set_pwm_frequency_duty(g_frequency, g_duty[3]);
// g_ozen_gears = 0;
// printf("pwm g_duty:%d", g_duty[3]);
// ozone_work_mode(3);
// break;
} }
/**
* @brief * * @param led_number 0������ 1���̵� 2������ 3ȫ�� */ void gears_led_on(uint8_t led_number) { switch (led_number) { case 0: port_led_r_set(true); port_led_g_set(false); port_led_b_set(false); break; case 1: port_led_r_set(false); port_led_g_set(true); port_led_b_set(false); break; case 2: port_led_r_set(false); port_led_g_set(false); port_led_b_set(true); break; case 3: port_led_r_set(false); port_led_g_set(false); port_led_b_set(false); break; default: break; } } //###################### �ߵ͵��������� ################//
//###################### ��ʱ������ʼ ################//
int time_key_press_frequency = 0; //ÿ����4�ν�����0
void set_ozone_work_time(void) { if (!ozone_work_state) { //�������ڲ��ǹ���״̬��ֱ�ӿ�ʼ����
set_ozen_gears(0); } ozone_work_state = 2; //���ڶ�ʱ����״̬
//��ȡ���ڵ�ʱ�䣬��Ϊ�жϵ���ʱʱ���Ļ�
g_count_down_begin_sys_time = get_sys_ticket(); port_fan_set(1); //���ȿ�ʼ����
printf("��ʱ��ʼg_sys_sick:%d\n", g_sys_sick); printf("��ʱ��ʼg_count_down_begin_sys_time:%d\n", g_count_down_begin_sys_time); switch (time_key_press_frequency) { case 5: time_key_press_frequency = 0; case 0: //��Сʱ
// g_ozone_work_time = 7200000;
g_ozone_work_time = 10000; printf("g_ozone_work_time:%d", g_ozone_work_time); time_key_press_frequency = 1; timing_led_on(0); break; case 1: //��Сʱ
// g_ozone_work_time = 100000;
g_ozone_work_time = 14400000; printf("g_ozone_work_time:%d", g_ozone_work_time); time_key_press_frequency = 2; timing_led_on(1); break; case 2: //��Сʱ
// g_ozone_work_time = 150000;
g_ozone_work_time = 21600000; printf("g_ozone_work_time:%d", g_ozone_work_time); time_key_press_frequency = 3; timing_led_on(2); break; case 3: //��Сʱ
// g_ozone_work_time = 200000;
// g_ozone_work_time = 60000;//60s
g_ozone_work_time = 28800000; printf("g_ozone_work_time:%d", g_ozone_work_time); time_key_press_frequency = 4; timing_led_on(3); break; case 4: ozone_work_state = 1; //һֱ����
printf("close timing"); timing_led_on(4); time_key_press_frequency = 0; break; default: break; } }
void timing_ozone_work_over(void) { /**
* @brief ��ʱ���� * */ close_ozone_work(); ozone_work_state = 0; g_ozone_work_time = 0; switch_key_state = false; }
/**
* @brief ��ʱ�������� * */ void is_ozone_work_time_over(void) { if (port_haspassedms(g_count_down_begin_sys_time) >= g_ozone_work_time) { g_count_down_begin_sys_time = get_sys_ticket(); timing_ozone_work_over(); // interval_key_press_frequency = 0;
g_ozone_interva_stat = false; interval_key_press_frequency = 0; printf("time over\r\n"); } }
/**
* @brief ��ʱʱ���趨����Ӧָʾ������ * * @param led_number 0��led0 1��led1 2��led2 3��led3 4ȫ������������������ */ void timing_led_on(uint8_t led_number) { switch (led_number) { case 0: port_led0_set(true); port_led1_set(false); port_led2_set(false); port_led3_set(false); break; case 1: port_led0_set(false); port_led1_set(true); port_led2_set(false); port_led3_set(false); break;
case 2: port_led0_set(false); port_led1_set(false); port_led2_set(true); port_led3_set(false); break;
case 3: port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(true); break; case 4: port_led0_set(false); port_led1_set(false); port_led2_set(false); port_led3_set(false); break; default: break; } }
//###################### ��ʱ�������� ################//
//###################### ���ذ�����ʼ ################//
// void update_timing_interval_begin_time(void) {
// /**
// * @brief ���µ���ʱʱ��
// *
// */
// g_count_down_begin_sys_time = get_sys_ticket();
// g_count_interval_down_begin_sys_time = get_sys_ticket();
// }
bool get_ozone_starting_up_state(void) { return switch_key_state; } void set_ozone_starting_up(void) { // ozone_interval_begin();
int starting_up_ozen_gears = 0; if (g_ozen_gears == 0) { starting_up_ozen_gears = 2; } else { starting_up_ozen_gears = g_ozen_gears - 1; } //����PWM����
set_ozen_gears(starting_up_ozen_gears); } void set_ozone_shutdown(void) { interval_key_press_frequency = 0; g_ozone_interva_stat = false; close_ozone_work(); } void process_switch_key(void) { //�����Ժ������ϴιػ�ǰ�����ý��й���
switch_key_state = !switch_key_state; printf("switch_key_state%d\n", switch_key_state); if (switch_key_state) { //����
// update_timing_interval_begin_time();
set_ozone_starting_up(); } else { //�ػ�
set_ozone_shutdown(); } } //###################### ���ذ������� ################//
//###################### ��Ъ������ʼ ################//
void set_interval_time(void) { //��ȡ���ڵ�ʱ�䣬��Ϊ�жϵ���ʱʱ���Ļ�
g_count_interval_down_begin_sys_time = get_sys_ticket(); switch (interval_key_press_frequency) { case 0: printf("begin interval"); g_ozone_interva_stat = true; g_ozone_interval_time = 300000; // g_ozone_interval_time = 3600000;
interval_key_press_frequency = 1; break; case 1: printf("stop interval"); g_ozone_interva_stat = false; interval_key_press_frequency = 0; break; } }
static void ozone_interval_begin(void) { int interval_ozen_gears = 0, interval_time_key_press_frequency = 0; if (g_ozen_gears == 0) { interval_ozen_gears = 3; } else { interval_ozen_gears = g_ozen_gears - 1; } if (time_key_press_frequency == 0) { interval_time_key_press_frequency = 4; } else { interval_time_key_press_frequency = time_key_press_frequency - 1; } //����PWM����
set_ozen_gears(interval_ozen_gears); if (ozone_work_state == 2) { timing_led_on(interval_time_key_press_frequency); //����led��
} } void ozone_interval_over(void) { close_ozone_work(); } static void close_ozone_work(void) { set_pwm_frequency_duty(g_frequency, g_duty[3]); //�ر�PWM����
gears_led_on(3); //�ر�RGB
timing_led_on(4); //�ر�4��led��
port_fan_set(false); //���Ƚ�������
}
bool g_interva_flag = false; void is_ozone_interva_time_over(void) { if (port_haspassedms(g_count_interval_down_begin_sys_time) >= g_ozone_interval_time) { g_count_interval_down_begin_sys_time = get_sys_ticket(); if (g_interva_flag == false) { g_interva_flag = true; printf("work over\r\n"); ozone_interval_over(); } else if (g_interva_flag == true) { g_interva_flag = false; printf("work begin\r\n"); ozone_interval_begin(); } } } //###################### ���������� ################//
void power_on_ozone_work_state(void) { close_ozone_work(); g_ozen_gears = 1; //Ϊ�˵������غ����ߵ�����
time_key_press_frequency = 5; //Ϊ�˵������غ���ʱʱ��
}
|