#include "app.h" #include "app_timer.h" #include "app_leakage.h" #include "stdio.h" #include "string.h" #include "bsp_Uart.h" #include "bsp_Wdg.h" #include "bsp_Led.h" #include "bsp_Flash.h" #include "bsp_W5500.h" #include "bsp_w25q.h" #include "bsp_DS1302.h" #include "bsp_relay.h" #include "bsp_buzzer.h" #include "proto_modbus_master_leakage.h" #include "proto_modbus_tcp_slave_ex.h" #include "gui_tjc_hmi.h" const char *HwVersion = "V1.0"; char SwVersion[24] = "V0.001.0"; void task_idle(void); void task_10ms(void); void task_50ms(void); void task_100ms(void); void task_200ms(void); void task_500ms(void); void task_1s(void); void task_2s(void); #define APP_TIMER_TASK_NUM (sizeof(app_timer_task) / sizeof(app_timer_class_t)) /*定义任务*/ app_timer_class_t app_timer_task[] = { {0, 1, 1, task_idle }, /*空闲任务一直执行*/ {0, 3, 10, task_10ms }, {0, 7, 50, task_50ms }, {0, 11, 100, task_100ms }, {0, 13, 200, task_200ms }, {0, 17, 500, task_500ms }, {0, 19, 1000, task_1s }, {0, 23, 2000, task_2s }, }; /****************************************** * 函数: AppInit * 功能: 初始化 * 参数: 无 * 返回: 无 * 描述: 无 ******************************************/ void app_init(void) { /*flash*/ w25q32.init(); // HAL_Delay(5000); /*串口初始化*/ com_uart1.init(&com_uart1); com_uart2.init(&com_uart2); com_uart3.init(&com_uart3); com_uart4.init(&com_uart4); com_uart6.init(&com_uart6); /*网口*/ W5500.Init(); /*屏幕通讯*/ tjc_hmi.init(); /*modbus协议*/ modbus_slave_ex.init(); /*子系统*/ modbus_leakage[APP_COM1].init(&modbus_leakage[APP_COM1]); modbus_leakage[APP_COM2].init(&modbus_leakage[APP_COM2]); modbus_leakage[APP_COM3].init(&modbus_leakage[APP_COM3]); modbus_leakage[APP_COM4].init(&modbus_leakage[APP_COM4]); /*外设*/ DS1302.Init(); relay.init(); buzzer.init(); led.init(); leakage.init(); /*com口绑定*/ app_com.init(); history.init_history(); /*分时复用,时间片轮询*/ app_timer.init(APP_TIMER_TASK_NUM,app_timer_task); //Wdg.Init(); } /****************************************** * 函数: App_task * 功能: 分时复用 * 参数: 无 * 返回: 无 * 描述: 主循环中调用 ******************************************/ void app_task(void) { app_timer.task(); task_idle(); W5500.Task(); } /*空闲执行的函数*/ void task_idle(void) { com_uart1.rx_task(&com_uart1); com_uart2.rx_task(&com_uart2); com_uart3.rx_task(&com_uart3); com_uart4.rx_task(&com_uart4); com_uart6.rx_task(&com_uart6); W5500.Task(); } void task_10ms(void) { } void task_50ms(void) { } void task_100ms(void) { } void task_200ms(void) { } void task_500ms(void) { led.task(); modbus_leakage[APP_COM1].tx_task(&modbus_leakage[APP_COM1]); modbus_leakage[APP_COM2].tx_task(&modbus_leakage[APP_COM2]); modbus_leakage[APP_COM3].tx_task(&modbus_leakage[APP_COM3]); modbus_leakage[APP_COM4].tx_task(&modbus_leakage[APP_COM4]); } void task_1s(void) { leakage.task(); DS1302.Task(); buzzer.task(); relay.task(); } void task_2s(void) { }