/********************************************************* *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd *文件名: main.c *作 者: AE Team *版 本: V1.00 *日 期: 2021/05/13 *描 述: GPIO模块示例程序 * 定时扫描GPIO_PA2的电平状态,高电平点亮LED1,低电平熄灭LED1 *备 注: *本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。 **********************************************************/ #include "main.h" #include //定义布尔 // extern ozone_message_t ozone_message; extern zkey_module_t key_module; bool rgb_flicker_state = false; extern rgb_message_t rgb_message; /*********************************************************************************************************************** * =====================================================看门狗====================================================== ** ***********************************************************************************************************************/ void iwdt_init(void) { /** * @brief 看门狗介绍:当计数到0时,窗口计数器+1 * 当窗口计数为“2”的时候,产生中断 * 当窗口计数器为“4”的之前没有进行喂狗操作,产生复位 * */ IWDT_InitStruType x; x.WDT_Tms = 4000; x.WDT_IE = Enable; /* IWDT中断使能 */ x.WDT_Rst = Enable; /* IWDT复位使能 */ x.WDT_Clock = IWDT_CLOCK_WDT; /* LRC */ IWDT_Init(&x); /* 使能IWDT */ IWDT_Enable(); } void feed_iwdt(void) { //喂狗 if (0x01 == IWDT_GetFlagStatus()) //产生中断 { IWDT_Clear(); // printf("喂狗\r\n"); } } //############### 测试一下看门狗 ##############// /** * @brief 上电臭氧工作情况,高档一直工作 * */ void power_on_ozone_working_status(void) { // PWM频率1Khz,占空比0,占空比低有效,设置占空比为0,pwm一直输出高电平 HOOK_pwm_module_set_pwm_duty(1, 0); light_module_set_timing_light_mode(CLOSE_ALL_LED); light_module_set_rgb_mode(OPEN_RED_LIGHT); port_fan_set(true); //打开你风扇 } /*********************************************************************************************************************** * ======================================================主函数======================================================= ** ***********************************************************************************************************************/ int main(void) { HRC_Config(Enable, SCU_HRC_48M, Enable); //时钟源SCU_CLK_HRC SystemInit(); DeviceClockAllEnable(); //打开所有外设时钟 User_SysTickInit(); //滴答定时器初始化为(配置为1ms中断) SysTick_Enable(); uart0_init(); gpio_init(); zkey_init(&key_module); t16n0_1_init(); //配置PA4输出pwm // iwdt_init(); power_on_ozone_working_status(); // power_on_ozone_work_state(); //上电工作情况 // ADCInit("A",4); // printf("Initialization completed\r\n"); while (1) { // port_do_debug_light_state(); port_key_state(); // if (get_ozone_starting_up_state() == true) { //开机中 // // if (ozone_message.ozone_work_state == 2) // // is_ozone_work_time_over(); // // if (ozone_message.ozone_interva_state == true) { // // set_rgb_flicker(); //间歇状态下rgb亮3灭1 // // is_ozone_interva_time_over(); // // } // pwm_module_loop(); // if (rgb_message.rgb_flicker_mode == true) { // process_rgb_flicker_mode(); // rgb_message.already_set_rgb_mode = false; // } else if (rgb_message.rgb_flicker_mode == false) { // if (rgb_message.already_set_rgb_mode == false) // light_module_set_rgb_mode(rgb_message.turn_off_the_mode_before_rgb); // rgb_message.already_set_rgb_mode = true; // } // // adc_loop_gather(); // } else if (get_ozone_starting_up_state() == false) { //关机 // } // test_iwdt(); // feed_iwdt(); //当产生中断的时候进行喂狗操作 } }