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.

90 lines
3.2 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
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. /*********************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd
  3. *: main.c
  4. * : AE Team
  5. * : V1.00
  6. * : 2021/05/13
  7. * : GPIO模块示例程序
  8. * GPIO_PA2的电平状态LED1LED1
  9. * :
  10. *使
  11. **********************************************************/
  12. #include "main.h"
  13. #include <stdbool.h> //定义布尔
  14. extern ozone_message_t ozone_message;
  15. extern zkey_module_t key_module;
  16. /***********************************************************************************************************************
  17. * ===========================================================================================================
  18. **
  19. ***********************************************************************************************************************/
  20. void iwdt_init(void) {
  21. /**
  22. * @brief 0+1
  23. * 2
  24. * 4
  25. *
  26. */
  27. IWDT_InitStruType x;
  28. x.WDT_Tms = 4000;
  29. x.WDT_IE = Enable; /* IWDT中断使能 */
  30. x.WDT_Rst = Enable; /* IWDT复位使能 */
  31. x.WDT_Clock = IWDT_CLOCK_WDT; /* LRC */
  32. IWDT_Init(&x);
  33. /* 使能IWDT */
  34. IWDT_Enable();
  35. }
  36. void feed_iwdt(void) {
  37. //喂狗
  38. if (0x01 == IWDT_GetFlagStatus()) //产生中断
  39. {
  40. IWDT_Clear();
  41. // printf("喂狗\r\n");
  42. }
  43. }
  44. extern uint32_t print_time;
  45. //############### 测试一下看门狗 ##############//
  46. void test_iwdt(void) {
  47. if (print_time <= 5000) {
  48. feed_iwdt();
  49. }
  50. }
  51. /***********************************************************************************************************************
  52. * =============================================================================================================
  53. **
  54. ***********************************************************************************************************************/
  55. int main(void) {
  56. HRC_Config(Enable, SCU_HRC_48M, Enable); //时钟源SCU_CLK_HRC
  57. SystemInit();
  58. DeviceClockAllEnable(); //打开所有外设时钟
  59. User_SysTickInit(); //滴答定时器初始化为(配置为1ms中断)
  60. SysTick_Enable();
  61. uart0_init();
  62. gpio_init();
  63. zkey_init(&key_module);
  64. t16n0_1_init(); //配置PA4输出pwm
  65. iwdt_init();
  66. power_on_ozone_work_state(); //上电工作情况
  67. ADCInit();
  68. //printf("Initialization completed\r\n");
  69. while (1) {
  70. // port_do_debug_light_state();
  71. port_key_state();
  72. if (get_ozone_starting_up_state() == true) { //开机中
  73. if (ozone_message.ozone_work_state == 2)
  74. is_ozone_work_time_over();
  75. if (ozone_message.ozone_interva_state == true){
  76. set_rgb_flicker();
  77. is_ozone_interva_time_over();
  78. }
  79. adc_loop_gather();
  80. } else if (get_ozone_starting_up_state() == false) { //关机
  81. }
  82. //test_iwdt();
  83. feed_iwdt(); //当产生中断的时候进行喂狗操作
  84. }
  85. }