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.

226 lines
5.5 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. #include "ozone_work.h"
  2. extern uint32_t g_frequency;
  3. extern uint32_t g_sys_sick;
  4. extern uint32_t g_duty[4];
  5. uint32_t g_ozone_work_time = 0;
  6. uint32_t g_count_down_begin_sys_time = 0;
  7. int ozone_work_state = 0; // 0û�й�����1һֱ������2��ʱ����
  8. void ozone_work_mode(int mode) {
  9. if (ozone_work_state != 2) {
  10. ozone_work_state=1;
  11. }
  12. port_fan_set(true);
  13. switch (mode) {
  14. case 0:
  15. gears_led_on(0);
  16. break;
  17. case 1:
  18. gears_led_on(1);
  19. break;
  20. case 2:
  21. gears_led_on(2);
  22. break;
  23. case 3:
  24. g_ozone_work_over(); //��������
  25. break;
  26. default:
  27. break;
  28. }
  29. }
  30. int g_ozen_gears = 1; // M������Ϊ���ϵ���������Ĭ���´�����50%��PWM����
  31. void set_ozen_gears(int ozen_gears) {
  32. /**
  33. * @brief Construct a new switch object
  34. * pwm
  35. */
  36. printf("g_sys_sick:%d\n", g_sys_sick);
  37. printf("g_ozone_work_time:%d\n", g_ozone_work_time);
  38. printf("g_count_down_begin_sys_time:%d\n", g_count_down_begin_sys_time);
  39. switch (ozen_gears) {
  40. case 0:
  41. set_pwm_frequency_duty(g_frequency, g_duty[0]);
  42. g_ozen_gears = 1;
  43. printf("pwm g_duty:%d", g_duty[0]);
  44. ozone_work_mode(0);
  45. break;
  46. case 1:
  47. set_pwm_frequency_duty(g_frequency, g_duty[1]);
  48. g_ozen_gears = 2;
  49. printf("pwm g_duty:%d", g_duty[1]);
  50. ozone_work_mode(1);
  51. break;
  52. case 2:
  53. set_pwm_frequency_duty(g_frequency, g_duty[2]);
  54. g_ozen_gears = 3;
  55. printf("pwm g_duty:%d", g_duty[2]);
  56. ozone_work_mode(2);
  57. break;
  58. case 3:
  59. set_pwm_frequency_duty(g_frequency, g_duty[3]);
  60. g_ozen_gears = 0;
  61. printf("pwm g_duty:%d", g_duty[3]);
  62. ozone_work_mode(3);
  63. break;
  64. }
  65. }
  66. /**
  67. * @brief
  68. *
  69. * @param led_number 0 1̵ 2 3ȫ
  70. */
  71. void gears_led_on(uint8_t led_number) {
  72. switch (led_number) {
  73. case 0:
  74. port_led_r_set(true);
  75. port_led_g_set(false);
  76. port_led_b_set(false);
  77. break;
  78. case 1:
  79. port_led_r_set(false);
  80. port_led_g_set(true);
  81. port_led_b_set(false);
  82. break;
  83. case 2:
  84. port_led_r_set(false);
  85. port_led_g_set(false);
  86. port_led_b_set(true);
  87. break;
  88. case 3:
  89. port_led_r_set(false);
  90. port_led_g_set(false);
  91. port_led_b_set(false);
  92. break;
  93. default:
  94. break;
  95. }
  96. }
  97. int time_key_press_frequency = 0; //ÿ����4�ν�����0
  98. void set_ozone_work_time(void) {
  99. if (!ozone_work_state) { //�������ڲ��ǹ���״̬��ֱ�ӿ�ʼ����
  100. ozone_work_state = 2; //���ڶ�ʱ����״̬
  101. set_ozen_gears(0);
  102. }
  103. //��ȡ���ڵ�ʱ�䣬��Ϊ�жϵ���ʱʱ���Ļ�׼
  104. g_count_down_begin_sys_time = get_sys_ticket();
  105. port_fan_set(1); //���ȿ�ʼ����
  106. printf("��ʱ��ʼg_sys_sick:%d\n", g_sys_sick);
  107. printf("��ʱ��ʼg_count_down_begin_sys_time:%d\n",
  108. g_count_down_begin_sys_time);
  109. switch (time_key_press_frequency) {
  110. case 0: //��Сʱ
  111. // g_ozone_work_time = 5000;//5s
  112. // g_ozone_work_time = 72000000;
  113. g_ozone_work_time = 7200000;
  114. printf("g_ozone_work_time:%d", g_ozone_work_time);
  115. time_key_press_frequency = 1;
  116. timing_led_on(0);
  117. break;
  118. case 1: //��Сʱ
  119. // g_ozone_work_time = 100000;
  120. g_ozone_work_time = 14400000;
  121. printf("g_ozone_work_time:%d", g_ozone_work_time);
  122. time_key_press_frequency = 2;
  123. timing_led_on(1);
  124. break;
  125. case 2: //��Сʱ
  126. // g_ozone_work_time = 150000;
  127. g_ozone_work_time = 21600000;
  128. printf("g_ozone_work_time:%d", g_ozone_work_time);
  129. time_key_press_frequency = 3;
  130. timing_led_on(2);
  131. break;
  132. case 3: //��Сʱ
  133. // g_ozone_work_time = 200000;
  134. //g_ozone_work_time = 60000;//60s
  135. g_ozone_work_time = 28800000;
  136. printf("g_ozone_work_time:%d", g_ozone_work_time);
  137. time_key_press_frequency = 4;
  138. timing_led_on(3);
  139. break;
  140. case 4:
  141. ozone_work_state = 1; //һֱ����
  142. printf("close timing");
  143. timing_led_on(4);
  144. time_key_press_frequency = 0;
  145. break;
  146. default:
  147. break;
  148. }
  149. }
  150. void g_ozone_work_over(void) {
  151. /**
  152. * @brief ʱ
  153. *
  154. */
  155. set_pwm_frequency_duty(g_frequency, g_duty[3]); //�ر�PWM����
  156. ozone_work_state = 0;
  157. g_ozone_work_time = 0;
  158. gears_led_on(3); //�ر�RGB
  159. timing_led_on(4); //�ر�4��led��
  160. //��time_key_press_frequency=0�´ΰ������´Ӷ�ʱ2Сʱ��ʼ
  161. time_key_press_frequency = 0;
  162. // g_ozen_gears=0�´ΰ������´����ߵ���ʼ
  163. g_ozen_gears = 0;
  164. port_fan_set(false); //���Ƚ�������
  165. }
  166. /**
  167. * @brief ʱ
  168. *
  169. */
  170. void is_ozone_work_time_over(void) {
  171. if (port_haspassedms(g_count_down_begin_sys_time) >= g_ozone_work_time) {
  172. g_count_down_begin_sys_time = get_sys_ticket();
  173. g_ozone_work_over();
  174. printf("time over\r\n");
  175. }
  176. }
  177. /**
  178. * @brief ʱʱӦָʾ
  179. *
  180. * @param led_number 0led0 1led1 2led2 3led3 4ȫ𲢴
  181. */
  182. static void timing_led_on(uint8_t led_number) {
  183. switch (led_number) {
  184. case 0:
  185. port_led0_set(true);
  186. port_led1_set(false);
  187. port_led2_set(false);
  188. port_led3_set(false);
  189. break;
  190. case 1:
  191. port_led0_set(false);
  192. port_led1_set(true);
  193. port_led2_set(false);
  194. port_led3_set(false);
  195. break;
  196. case 2:
  197. port_led0_set(false);
  198. port_led1_set(false);
  199. port_led2_set(true);
  200. port_led3_set(false);
  201. break;
  202. case 3:
  203. port_led0_set(false);
  204. port_led1_set(false);
  205. port_led2_set(false);
  206. port_led3_set(true);
  207. break;
  208. case 4:
  209. port_led0_set(false);
  210. port_led1_set(false);
  211. port_led2_set(false);
  212. port_led3_set(false);
  213. break;
  214. default:
  215. break;
  216. }
  217. }