Files
Leakage-Control/leakage_system/usr/app/app.c
2026-02-25 15:12:13 +08:00

168 lines
3.1 KiB
C

#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();
/*串口初始化*/
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)
{
}