Files
secs2-SJ/usr/app/app.c
T
2026-09-09 14:54:40 +08:00

168 lines
3.1 KiB
C

#include "app.h"
#include "os_timer.h"
#include "stdio.h"
#include "bsp_Uart.h"
#include "bsp_Wdg.h"
#include "bsp_Led.h"
#include "bsp_print.h"
#include "bsp_Flash.h"
#include "bsp_W5500.h"
#include "bsp_W5500_1.h"
#include "bsp_Key.h"
#include "bsp_DS1302.h"
#include "proto_HSMS.h"
#include "proto_SECS2.h"
#include "proto_Para_Modbus.h"
#include "proto_modbus_tcp_master.h"
const char *HwVersion = "V2.2";
char SwVersion[24] = "SECS2 V2.2-V1.005.SJ";
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);
/******************************************
* 函数: AppInit
* 功能: 初始化
* 参数: 无
* 返回: 无
* 描述: 无
******************************************/
void App_Init(void)
{
Wdg.Init();
Wdg.Feed();
Usr_Flash.Init();
OsTimer_Init();
COM_Uart1.Init(&COM_Uart1);
COM_Uart2.Init(&COM_Uart2);
COM_Uart3.Init(&COM_Uart3);
DS1302.Init();
W5500.Init();
Wdg.Feed();
W5500_1.Init();
HSMS.Init();
Para_Modbus.Init();
modbus_tcp.init();
Led.Init();
key.init();
Wdg.Feed();
printf("%s\n",SwVersion);
}
/******************************************
* 函数: App_Task
* 功能: 分时复用
* 参数: 无
* 返回: 无
* 描述: 主循环中调用
******************************************/
void App_Task(void)
{
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_10ms, osTime_MSecTick, 10))
{
OsTimeTick_10ms = osTime_MSecTick;
Task_10ms();
}
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_50ms, osTime_MSecTick, 50))
{
OsTimeTick_50ms = osTime_MSecTick;
Task_50ms();
}
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_100ms, osTime_MSecTick, 100))
{
OsTimeTick_100ms = osTime_MSecTick;
Task_100ms();
}
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_200ms, osTime_MSecTick, 200))
{
OsTimeTick_200ms = osTime_MSecTick;
Task_200ms();
}
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_500ms, osTime_MSecTick, 500))
{
OsTimeTick_500ms = osTime_MSecTick;
Task_500ms();
}
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_1s, osTime_MSecTick, 1000))
{
OsTimeTick_1s = osTime_MSecTick;
Task_1s();
}
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_2s, osTime_MSecTick, 2000))
{
OsTimeTick_2s = osTime_MSecTick;
Task_2s();
}
TASK_Idle();
}
/*空闲执行的函数*/
void TASK_Idle(void)
{
COM_Uart1.Rx_Task(&COM_Uart1);
COM_Uart2.Rx_Task(&COM_Uart2);
COM_Uart3.Rx_Task(&COM_Uart3);
W5500.Task();
W5500_1.Task();
SECS2.Tx_Alarm_Task();
SECS2.Tx_Dev_State_Task();
SECS2.Tx_Set_Ask_Task();
Wdg.Feed();
proto_modbus_print_1s();
}
void Task_10ms(void)
{
key.task();
}
void Task_50ms(void)
{
}
void Task_100ms(void)
{
}
void Task_200ms(void)
{
}
void Task_500ms(void)
{
Led.Flash();
modbus_tcp.task();
}
void Task_1s(void)
{
DS1302.Task();
DS1302.UpdateBase();
W5500.Monitor_task();
W5500_1.Monitor_task();
}
void Task_2s(void)
{
}