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.

572 lines
21 KiB

4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. #include "main.h"
  2. #include <stdbool.h> //���岼��
  3. #define TIMING_TICK 20000
  4. #define INTERVAL_PERIOD 10000
  5. /***********************************************************************************************************************
  6. * =====================================================ȫֱ====================================================== *
  7. ***********************************************************************************************************************/
  8. bool starting_up_state = false; //���ػ���־λ
  9. bool timing_function_enable_falg = false; //��ʱ����ʹ�ܱ�־λ
  10. static uint32_t s_timing_shutdown_begin_ticket = 0; //��ʱ��ʼʱ����ʱ��ϵͳʱ��
  11. static uint32_t s_timing_time; //��ʱʱ��
  12. static uint32_t s_interval_period = 0; //��Ъ���ܵ�����
  13. static uint8_t s_now_interval_duty = 0; //��Ъ���ܵ�ռ�ձ�
  14. static uint8_t s_intervalkey_press_count = 0; //��Ъ�������µĴ���
  15. uint8_t rgb_ticket_count = 3;
  16. WORK_LEVEL_T now_level; //���ڵĵ�λ
  17. WORK_LEVEL_T shutdown_before_level; //�ػ�ǰ�ĵ�λ
  18. error_state_t error_state; //�ĸ������¼�
  19. static bool error_even_trigger_after_stop_ozone_work_state; //�����¼�������ֹͣ����������־λ
  20. static bool pwm_modble_enable_falg; //Ӳ��pwmʹ�ܱ�־λ
  21. //####################### HOOKʵ�� ################################//
  22. void HOOK_pwm_module_set_pwm_duty(uint32_t frequency, uint32_t duty) {
  23. set_pwm_modbul_freq_duty(frequency, duty);
  24. port_fan_set(true); //�򿪷���
  25. pwm_modble_enable_falg = true;
  26. printf("work\r\n");
  27. }
  28. void HOOK_pwm_stop(void) {
  29. set_pwm_modbul_freq_duty(1, 0); //�ر�PWM����
  30. port_fan_set(false); //���Ƚ�������
  31. pwm_modble_enable_falg = false;
  32. printf("rest\r\n");
  33. }
  34. bool HOOK_pwm_is_enable(void) { return pwm_modble_enable_falg; }
  35. //####################### ������ ################################//
  36. void process_intervalkey_press_even(void) {
  37. s_intervalkey_press_count++;
  38. if (s_intervalkey_press_count == 1) {
  39. //��Ъ���ܿ�����rgb��������һ��,Ϊ�����û�������֪����Ъ�����Ѿ�����������rgb_ticket_count����3������rgb��1s
  40. rgb_ticket_count = 3;
  41. update_interval_period_duty(50);
  42. } else {
  43. update_interval_period_duty(100); // ����update_interval_period_duty��100������s_intervalkey_press_count=0
  44. }
  45. }
  46. /**
  47. * @brief
  48. *
  49. */
  50. void update_interval_period_duty(uint8_t interval_duty) {
  51. if (interval_duty == 100) { //ռ�ձ�����100һֱ����
  52. printf("duty 100\r\n");
  53. s_interval_period = 0;
  54. s_now_interval_duty = 100;
  55. s_intervalkey_press_count = 0;
  56. ozone_pwm_control_disable();
  57. restore_the_mode_before_intermittent_work();
  58. } else if (interval_duty == 50) {
  59. printf("duty 50\r\n");
  60. s_interval_period = INTERVAL_PERIOD;
  61. s_now_interval_duty = 50;
  62. ozone_pwm_control_enable();
  63. }
  64. ozone_pwm_control_module_set_pwm_output_1(s_interval_period, s_now_interval_duty);
  65. }
  66. /**
  67. * @brief ָЪǰĹλ
  68. *
  69. */
  70. void restore_the_mode_before_intermittent_work(void) {
  71. if (now_level == WORK_LEVEL_LOW) {
  72. light_module_set_rgb_mode(RGB_COLOR_GERRN);
  73. set_pwm_modbul_freq_duty(1, 25);
  74. port_fan_set(true); //�򿪷���
  75. } else if (now_level == WORK_LEVEL_MIDDLE) {
  76. light_module_set_rgb_mode(RGB_COLOR_BLUE);
  77. set_pwm_modbul_freq_duty(1, 50);
  78. port_fan_set(true); //�򿪷���
  79. } else if (now_level == WORK_LEVEL_HIGHT) {
  80. light_module_set_rgb_mode(RGB_COLOR_RED);
  81. set_pwm_modbul_freq_duty(1, 100);
  82. port_fan_set(true); //�򿪷���
  83. }
  84. }
  85. /**
  86. * @brief Ъܿʱrgb3s1s
  87. *
  88. */
  89. void process_rgb_flicker(void) {
  90. static uint32_t rgb_ticket = 0;
  91. if (port_haspassedms(rgb_ticket) > 1000) {
  92. rgb_ticket = get_sys_ticket();
  93. if (rgb_ticket_count < 3) {
  94. if (now_level == WORK_LEVEL_LOW) {
  95. light_module_set_rgb_mode(RGB_COLOR_GERRN);
  96. } else if (now_level == WORK_LEVEL_MIDDLE) {
  97. light_module_set_rgb_mode(RGB_COLOR_BLUE);
  98. } else if (now_level == WORK_LEVEL_HIGHT) {
  99. light_module_set_rgb_mode(RGB_COLOR_RED);
  100. }
  101. } else {
  102. light_module_set_rgb_mode(RGB_CLOSE);
  103. rgb_ticket_count = 0;
  104. }
  105. rgb_ticket_count++;
  106. }
  107. }
  108. /***********************************************************************************************************************
  109. * =============================================================================================================== *
  110. ***********************************************************************************************************************/
  111. static zkey_t s_keys[] = {
  112. ZKEY_INIT("timerkey", port_gpio_get_timer_key_state),
  113. ZKEY_INIT("gearskey", port_gpio_get_gears_key_state),
  114. ZKEY_INIT("intervalkey", port_gpio_get_interval_key_state),
  115. ZKEY_INIT("switchkey", port_gpio_get_switch_key_state),
  116. };
  117. zkey_module_t key_module = ZMODULE_INIT(s_keys, onkey);
  118. void onkey(zkey_t *key, zkey_state_t key_state) {
  119. /**
  120. * @brief жÿ״̬
  121. *
  122. * @param key
  123. * @param key_state
  124. */
  125. if (starting_up_state) { //������
  126. if (error_state.fan_error_status == false && error_state.way_circuit_error_status == false) { //�豸���쳣
  127. if (key == &s_keys[0] && //��ʱ����
  128. key->cur_state == zks_keep && //����
  129. !key->hasProcessed && //û�б�������
  130. key->keep_state_count >= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) //���³���ʱ������3s
  131. {
  132. key->hasProcessed = true;
  133. } else if (key == &s_keys[0] && //��ʱ����
  134. key->cur_state == zks_falling_edge && //�½��ش���
  135. !key->hasProcessed && key->keep_state_count <= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) //��3s
  136. {
  137. key->hasProcessed = true;
  138. printf("key0 zks_falling_edge\r\n");
  139. update_timing_time();
  140. updae_led_light_mode();
  141. } else if (key == &s_keys[1] && //�ߵ͵�λѡ��
  142. key->cur_state == zks_rising_edge && //
  143. !key->hasProcessed && //
  144. key->keep_state_count <= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) {
  145. key->hasProcessed = true;
  146. printf("key1 zks_rising_edge\r\n");
  147. process_gearskey_press_even();
  148. } else if (key == &s_keys[2] && //��Ъ��������ѡ��
  149. key->cur_state == zks_rising_edge && //
  150. !key->hasProcessed && //
  151. key->keep_state_count <= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) {
  152. key->hasProcessed = true;
  153. printf("key2 zks_rising_edge\r\n");
  154. process_intervalkey_press_even();
  155. } else if (key == &s_keys[3] && //���ذ���
  156. key->cur_state == zks_rising_edge && //
  157. !key->hasProcessed && //
  158. key->keep_state_count <= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) {
  159. key->hasProcessed = true;
  160. printf("key2 zks_rising_edge\r\n");
  161. shutdown();
  162. }
  163. } else if (error_state.fan_error_status == true || error_state.way_circuit_error_status == true) { //�豸�����쳣
  164. if (key == &s_keys[3] && //���ذ���
  165. key->cur_state == zks_rising_edge && //
  166. !key->hasProcessed && //
  167. key->keep_state_count <= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) {
  168. key->hasProcessed = true;
  169. printf("key2 zks_rising_edge\r\n");
  170. shutdown();
  171. }
  172. }
  173. } else { //�ػ���
  174. if (key == &s_keys[3] && //���ذ���
  175. key->cur_state == zks_rising_edge && //
  176. !key->hasProcessed && //
  177. key->keep_state_count <= POWER_KEY_TRIGGER_TIME / KEY_SCAN_PERIOD) {
  178. key->hasProcessed = true;
  179. printf("key zks_rising_edge\r\n");
  180. starting_up();
  181. }
  182. }
  183. }
  184. /**
  185. * @brief ϵ,пػⲿϵ󣬲
  186. *
  187. */
  188. void power_on_ozone_working_status(void) {
  189. update_ozone_work_gears(WORK_LEVEL_CLOSE);
  190. light_module_set_timing_light_mode(CLOSE_ALL_LED);
  191. port_fan_set(false); //�رշ���
  192. }
  193. //####################### ����� #######################/
  194. /**
  195. * @brief ݵλpwmrgbɫ
  196. *
  197. * @param gears
  198. */
  199. void update_ozone_work_gears(WORK_LEVEL_T level) {
  200. if (level == WORK_LEVEL_CLOSE) {
  201. ozone_pwm_control_module_set_pwm_output_2(1, 0, s_interval_period, s_now_interval_duty);
  202. light_module_set_rgb_mode(RGB_CLOSE);
  203. } else if (level == WORK_LEVEL_LOW) {
  204. ozone_pwm_control_module_set_pwm_output_2(1, 25, s_interval_period, s_now_interval_duty);
  205. light_module_set_rgb_mode(RGB_COLOR_GERRN);
  206. } else if (level == WORK_LEVEL_MIDDLE) {
  207. ozone_pwm_control_module_set_pwm_output_2(1, 50, s_interval_period, s_now_interval_duty);
  208. light_module_set_rgb_mode(RGB_COLOR_BLUE);
  209. } else if (level == WORK_LEVEL_HIGHT) {
  210. ozone_pwm_control_module_set_pwm_output_2(1, 100, s_interval_period, s_now_interval_duty);
  211. light_module_set_rgb_mode(RGB_COLOR_RED);
  212. }
  213. now_level = level;
  214. }
  215. void process_gearskey_press_even(void) {
  216. static uint8_t gearskey_press_count;
  217. gearskey_press_count++;
  218. if (gearskey_press_count == 1) {
  219. update_ozone_work_gears(WORK_LEVEL_MIDDLE);
  220. } else if (gearskey_press_count == 2) {
  221. update_ozone_work_gears(WORK_LEVEL_LOW);
  222. } else if (gearskey_press_count == 3) {
  223. gearskey_press_count = 0;
  224. update_ozone_work_gears(WORK_LEVEL_HIGHT);
  225. }
  226. }
  227. //####################### �����ػ� #######################/
  228. void shutdown(void) {
  229. ozone_pwm_control_disable();
  230. error_state.fan_error_status = false;
  231. error_state.way_circuit_error_status = false;
  232. s_intervalkey_press_count = 0;
  233. shutdown_before_level = now_level;
  234. starting_up_state = false;
  235. update_ozone_work_gears(WORK_LEVEL_CLOSE);
  236. light_module_set_timing_light_mode(CLOSE_ALL_LED);
  237. port_fan_set(false); //�رշ���
  238. }
  239. /**
  240. * @brief 󣬸ݹػʱĵλãػʱλΪرΪߵ
  241. *
  242. */
  243. void starting_up(void) {
  244. //����û�м�Ъ������������ռ�ձ�Ϊ100
  245. update_interval_period_duty(100);
  246. //����û�ж�ʱ�������Խ� timing_function_enable_falg = false; s_timing_time = 0;
  247. timing_function_enable_falg = false;
  248. s_timing_time = 0;
  249. starting_up_state = true;
  250. if (shutdown_before_level == WORK_LEVEL_CLOSE) {
  251. update_ozone_work_gears(WORK_LEVEL_HIGHT);
  252. } else {
  253. update_ozone_work_gears(shutdown_before_level);
  254. }
  255. port_fan_set(true); //����������
  256. }
  257. void process_switchkey(void) {
  258. static bool switchkey_press_count = 0;
  259. switchkey_press_count = !switchkey_press_count;
  260. if (switchkey_press_count) { //����
  261. starting_up();
  262. } else { //�ػ�
  263. shutdown();
  264. }
  265. }
  266. //####################### ��ʱ���� #######################/
  267. /**
  268. * @brief ڵʱи
  269. *
  270. */
  271. void updae_led_light_mode(void) {
  272. if ((s_timing_time / TIMING_TICK) == 0) {
  273. light_module_set_timing_light_mode(CLOSE_ALL_LED);
  274. } else if ((s_timing_time / TIMING_TICK) == 1) {
  275. light_module_set_timing_light_mode(OPEN_ONE_LED);
  276. } else if ((s_timing_time / TIMING_TICK) == 2) {
  277. light_module_set_timing_light_mode(OPEN_TWO_LED);
  278. } else if ((s_timing_time / TIMING_TICK) == 3) {
  279. light_module_set_timing_light_mode(OPEN_THREE_LED);
  280. } else if ((s_timing_time / TIMING_TICK) == 4) {
  281. light_module_set_timing_light_mode(OPEN_FOUR_LED);
  282. }
  283. }
  284. /**
  285. * @brief ÿΰʱtiming_time=timing_time+TIMING_TICK
  286. * timing_time==timing_time = 4 * TIMING_TICK;
  287. * timing_time = 0;
  288. *
  289. */
  290. void update_timing_time(void) {
  291. s_timing_shutdown_begin_ticket = get_sys_ticket(); //���¶�ʱ�ػ���ʼ��ʱ��
  292. update_begin_ticket(); //���¼�Ъ��ʼ��ʱ��
  293. timing_function_enable_falg = true; //ʹ�ܶ�ʱ����
  294. if (s_timing_time == 0) {
  295. s_timing_time = 1 * TIMING_TICK;
  296. } else if ((s_timing_time / TIMING_TICK) == 1) {
  297. s_timing_time = 2 * TIMING_TICK;
  298. } else if ((s_timing_time / TIMING_TICK) == 2) {
  299. s_timing_time = 3 * TIMING_TICK;
  300. } else if ((s_timing_time / TIMING_TICK) == 3) {
  301. s_timing_time = 4 * TIMING_TICK;
  302. } else if ((s_timing_time / TIMING_TICK) == 4) {
  303. s_timing_time = 0 * TIMING_TICK;
  304. timing_function_enable_falg = false;
  305. update_interval_period_duty(100);
  306. }
  307. printf("timing time:%d\r\n", s_timing_time);
  308. }
  309. /**
  310. * @brief ʱÿTIMING_TICK timing_time=timing_time-TIMING_TICK
  311. * TIMING_TICK==0ʱػ
  312. *
  313. */
  314. void try_shutdown(void) {
  315. if (port_haspassedms(s_timing_shutdown_begin_ticket) > TIMING_TICK) {
  316. s_timing_shutdown_begin_ticket = get_sys_ticket();
  317. printf("time minus %dms", TIMING_TICK);
  318. s_timing_time -= TIMING_TICK;
  319. updae_led_light_mode();
  320. }
  321. if (s_timing_time == 0) { //��ʱʱ�䵽
  322. timing_function_enable_falg = false; //ʧ�ܶ�ʱ����
  323. shutdown();
  324. }
  325. }
  326. bool timing_function_is_enable(void) { return timing_function_enable_falg; }
  327. void iwdt_init(void) {
  328. /**
  329. * @brief Źܣ0ʱڼ+1
  330. * ڼΪ2ʱ򣬲ж
  331. * ڼΪ4֮ǰûнιλ
  332. *
  333. */
  334. IWDT_InitStruType x;
  335. x.WDT_Tms = 4000;
  336. x.WDT_IE = Enable; /* IWDT�ж�ʹ�� */
  337. x.WDT_Rst = Enable; /* IWDT��λʹ�� */
  338. x.WDT_Clock = IWDT_CLOCK_WDT; /* LRC */
  339. IWDT_Init(&x);
  340. /* ʹ��IWDT */
  341. IWDT_Enable();
  342. }
  343. void feed_iwdt(void) {
  344. //�
  345. if (0x01 == IWDT_GetFlagStatus()) //�����ж�
  346. {
  347. IWDT_Clear();
  348. // printf("�\r\n");
  349. }
  350. }
  351. void process_error_even(void) {
  352. if (error_state.fan_error_status == false && error_state.way_circuit_error_status == false) { //û�д���
  353. return;
  354. } else {
  355. if (!error_even_trigger_after_stop_ozone_work_state) {
  356. error_even_trigger_after_stop_ozone_work_state = true;
  357. set_pwm_modbul_freq_duty(1, 0);
  358. light_module_set_rgb_mode(RGB_CLOSE);
  359. light_module_set_timing_light_mode(CLOSE_ALL_LED);
  360. port_fan_set(false); //�رշ���
  361. }
  362. if (error_state.fan_error_status == true) { //���ȵ�ѹ�쳣
  363. static uint32_t error_even_fan_ticket = 0;
  364. static uint8_t one_led_flicker_state = 1;
  365. if (port_haspassedms(error_even_fan_ticket) > 500) {
  366. error_even_fan_ticket = get_sys_ticket();
  367. one_led_flicker_state = !one_led_flicker_state;
  368. port_led0_set(one_led_flicker_state);
  369. }
  370. } else if (error_state.way_circuit_error_status == true) { //�ܵ�·��ѹ�쳣
  371. static uint32_t error_even_way_circuit = 0;
  372. static uint8_t two_led_flicker_state = 1;
  373. if (port_haspassedms(error_even_way_circuit) > 500) {
  374. error_even_way_circuit = get_sys_ticket();
  375. two_led_flicker_state = !two_led_flicker_state;
  376. port_led0_set(two_led_flicker_state);
  377. port_led1_set(two_led_flicker_state);
  378. }
  379. }
  380. }
  381. }
  382. /***********************************************************************************************************************
  383. * ===============================================================================================================
  384. **
  385. ***********************************************************************************************************************/
  386. void test_adc(void) {
  387. while (1) {
  388. ADC_InitStruType x;
  389. GPIO_InitSettingType y;
  390. y.Signal = GPIO_Pin_Signal_Analog; //�
  391. y.Dir = GPIO_Direction_Input; //����
  392. y.Func = GPIO_Reuse_Func0;
  393. // x.CHS����adc�ɼ���ͨ��ÿ�����Ŷ�Ӧһ��ͨ��
  394. GPIO_Init(GPIO_Pin_A2, &y);
  395. //������Ƶ�Ժ�Tadclk=1/(PCLK/4)Լ����0.083us
  396. x.CLKS = ADC_CLKS_PCLK;
  397. x.CLKDIV = ADC_CLKDIV_1_32; /* ADCʱ��ԴԤ��Ƶ */
  398. //�ɼ�����ģ����*3.3/4096=���ڵĵ�ѹ
  399. x.VREF_SEL = ADC_VREF_SEL_0; /* �ڲ��ο���ѹ2.048v,�������ڲ��ο���ѹΪ���� */
  400. x.VREFP = ADC_VREFP_VDD; /* ѡ��оƬ�Ĺ�����ѹVDD������������adc������Ҫ�ĸ���ѹ�����ο�adc�IJο���ѹΪ���� */
  401. x.VREFN = ADC_VREFN_VSS; /* �����ο���ѹѡ�� */
  402. x.CHS = ADC_CHS_AIN8;
  403. x.SMPS = ADC_SMPS_SOFT; /* AD����ģʽΪ�������� */
  404. //����ʱ��st*2+1(��Tadclk)=1.743us
  405. x.ST = 10; /* ADӲ������ʱ��ѡ�� */
  406. x.BITSEL = ADC_BITSEL_12; /* AD�ֱ���12λ */
  407. ADC_Init(&x);
  408. uint32_t pa2_adc_val = 0;
  409. ADC_SoftStart();
  410. ADC_SoftStop();
  411. //����ת��
  412. while (ADC_GetConvStatus() != RESET)
  413. ;
  414. pa2_adc_val = ADC_GetConvValue();
  415. printf("%d\r\n", pa2_adc_val);
  416. printf("pa2_adc_valpa2_val:%lf\r\n", pa2_adc_val * 3.3 / 4096);
  417. y.Signal = GPIO_Pin_Signal_Analog; //�
  418. y.Dir = GPIO_Direction_Input; //����
  419. y.Func = GPIO_Reuse_Func0;
  420. // x.CHS����adc�ɼ���ͨ��ÿ�����Ŷ�Ӧһ��ͨ��
  421. GPIO_Init(GPIO_Pin_B8, &y);
  422. //������Ƶ�Ժ�Tadclk=1/(PCLK/4)Լ����0.083us
  423. x.CLKS = ADC_CLKS_PCLK;
  424. x.CLKDIV = ADC_CLKDIV_1_32; /* ADCʱ��ԴԤ��Ƶ */
  425. //�ɼ�����ģ����*3.3/4096=���ڵĵ�ѹ
  426. x.VREF_SEL = ADC_VREF_SEL_0; /* �ڲ��ο���ѹ2.048v,�������ڲ��ο���ѹΪ���� */
  427. x.VREFP = ADC_VREFP_VDD; /* ѡ��оƬ�Ĺ�����ѹVDD������������adc������Ҫ�ĸ���ѹ�����ο�adc�IJο���ѹΪ���� */
  428. x.VREFN = ADC_VREFN_VSS; /* �����ο���ѹѡ�� */
  429. x.CHS = ADC_CHS_AIN3;
  430. x.SMPS = ADC_SMPS_SOFT; /* AD����ģʽΪ�������� */
  431. //����ʱ��st*2+1(��Tadclk)=1.743us
  432. x.ST = 10; /* ADӲ������ʱ��ѡ�� */
  433. x.BITSEL = ADC_BITSEL_12; /* AD�ֱ���12λ */
  434. ADC_Init(&x);
  435. uint32_t pb8_adc_val = 0;
  436. ADC_SoftStart();
  437. ADC_SoftStop();
  438. //����ת��
  439. while (ADC_GetConvStatus() != RESET)
  440. ;
  441. pb8_adc_val = ADC_GetConvValue();
  442. printf("pb8_adc_val%d\r\n", pb8_adc_val);
  443. printf("pb8_val:%lf\r\n", pb8_adc_val * 3.3 / 4096);
  444. Delayms(1000);
  445. }
  446. }
  447. void test(void) {
  448. port_fan_set(false);
  449. Delayms(10000);
  450. port_fan_set(true);
  451. printf("open\r\n");
  452. Delayms(10000);
  453. while (1) {
  454. // unused_gpio_init();
  455. // gpio_init();
  456. // port_fan_set(false);
  457. // printf("close\r\n");
  458. // Delayms(30000);
  459. // port_fan_set(true);
  460. // printf("open\r\n");
  461. // Delayms(10000);
  462. }
  463. error_state.way_circuit_error_status = true;
  464. error_state.fan_error_status = true;
  465. // while (1) {
  466. // port_fan_set(true); //���Թرշ���
  467. // printf("open\r\n");
  468. // Delayms(50000);
  469. // port_fan_set(false); //���Թرշ���
  470. // printf("close\r\n");
  471. // Delayms(50000);
  472. // port_do_debug_light_state();
  473. // printf("Initialization completed\r\n");
  474. // }
  475. // while (1) {
  476. // port_do_debug_light_state();
  477. // printf("Initialization completed\r\n");
  478. // }
  479. }
  480. /**
  481. * @brief Ъʹܺrgb˸
  482. *
  483. */
  484. /***********************************************************************************************************************
  485. * =============================================================================================================
  486. **
  487. ***********************************************************************************************************************/
  488. int main(void) {
  489. HRC_Config(Enable, SCU_HRC_48M, Enable); //ʱ��ԴSCU_CLK_HRC
  490. SystemInit();
  491. DeviceClockAllEnable(); //������������ʱ��
  492. User_SysTickInit(); //�δ���ʱ����ʼ��Ϊ(����Ϊ1ms�ж�)
  493. SysTick_Enable();
  494. // all_gpio_reset();
  495. unused_gpio_init();
  496. gpio_init();
  497. uart0_init();
  498. zkey_init(&key_module);
  499. t16_pa4_init();
  500. // iwdt_init();
  501. power_on_ozone_working_status();
  502. printf("Initialization completed\r\n");
  503. // test();
  504. // test_adc();
  505. while (true) {
  506. port_do_debug_light_state();
  507. // feed_iwdt();
  508. static uint32_t keylastprocess = 0;
  509. if (port_haspassedms(keylastprocess) > 40) {
  510. keylastprocess = get_sys_ticket();
  511. zkey_do_loop_in_each_period(NULL);
  512. }
  513. if (starting_up_state) { //������
  514. port_do_debug_light_state();
  515. process_error_even();
  516. try_adc_gather();
  517. if (timing_function_is_enable()) { //��ʱ�����ǿ�����
  518. try_shutdown();
  519. }
  520. if (ozone_pwm_control_is_enable() == true) {
  521. ozone_pwm_control_module_loop();
  522. process_rgb_flicker();
  523. }
  524. } else { //�ػ���
  525. }
  526. }
  527. }
  528. /**
  529. * ϵ״̬òͨ
  530. * ػͨ
  531. * ʱͨ
  532. * Ъ˸ͨ
  533. * λͨ
  534. * ģȴ󴥷led0˸ͨ
  535. * ģܵ·󴥷led0led1˸ͨ
  536. * עҪӸ߼ܵ·ѹȵѹ߼֮ټ
  537. */