20230731_XiaMenShiCheng_emb/ZTMS_XiaMenShiCheng/Src/Usr/App/app_main.c
Rjh913828050 6d61003da7 类型:重构
内容:厦门实诚项目下位机软件最新程序
人员:任家豪
2023-10-08 14:16:02 +08:00

323 lines
14 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*****************************************************************************/
/* ZTYP Technology , Inc. Copyright (c) 2001-2018 */
/*****************************************************************************/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include <string.h>
#include "app_cfg.h"
#include "cpu_core.h"
#include "os.h"
#include "bsp.h"
#include "bsp_sys.h"
#include "usr_bsp_sys.h"
#include "usr_drv_sys.h"
#include "usr_task_sys.h"
#include "usr_task_network.h"
#include "usr_task_watchdog.h"
#include "usr_task_heart.h"
#include "usr_task_inside_para_sensor.h"
#include "usr_task_many_para_sensor.h"
#include "usr_task_camera.h"
#include "usr_task_rtc.h"
#include "usr_task_timer.h"
#include "usr_task_imu.h"
/*
*********************************************************************************************************
* LOCAL DEFINES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* LOCAL CONSTANTS
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* LOCAL DATA TYPES
*********************************************************************************************************
*/
/*$PAGE*/
/*
*********************************************************************************************************
* LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/
static OS_STK AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE];
static OS_STK AppTaskUsrWatchdogStk[APP_CFG_TASK_USR_WATCHDOG_STK_SIZE];
static OS_STK AppTaskUsrTimerStk[APP_CFG_TASK_USR_TIMER_STK_SIZE];
static OS_STK AppTaskUsrRtcStk[APP_CFG_TASK_USR_RTC_STK_SIZE];
static OS_STK AppTaskUsrHeartStk[APP_CFG_TASK_USR_HEART_STK_SIZE];
static OS_STK AppTaskUsrNetworkStk[APP_CFG_TASK_USR_NETWORK_STK_SIZE];
static OS_STK AppTaskUsrCameraStk[APP_CFG_TASK_USR_CAMERA_STK_SIZE];
static OS_STK AppTaskUsrInsideSensorStk[APP_CFG_TASK_USR_INSIDE_SENSOR_STK_SIZE];
static OS_STK AppTaskUsrManyParaSensorStk[APP_CFG_TASK_USR_MANY_PARA_SENSOR_STK_SIZE];
static OS_STK AppTaskUsrImuSensorStk[APP_CFG_TASK_USR_IMU_SENSOR_STK_SIZE];
/*
*********************************************************************************************************
* LOCAL MACRO'S
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/
static void AppTaskCreate (void);
static void AppTaskStart (void *p_arg);
/*$PAGE*/
/*
*********************************************************************************************************
* main()
*
* Description : Entry point for C code.
*
* Arguments : none.
*
* Returns : none.
*
* Note(s) : (1) It is assumed that your code will call main() once you have performed all necessary
* initialization.
*********************************************************************************************************
*/
int main (void)
{
#if (OS_TASK_NAME_EN > 0)
CPU_INT08U err;
#endif
#if (CPU_CFG_NAME_EN == DEF_ENABLED)
CPU_ERR cpu_err;
#endif
#if (CPU_CFG_NAME_EN == DEF_ENABLED)
CPU_NameSet((CPU_CHAR *)"TM4C1294NCPDT",
(CPU_ERR *)&cpu_err);
#endif
CPU_IntDis(); /* Disable all interrupts. */
OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel" */
OSTaskCreateExt((void (*)(void *)) AppTaskStart, /* Create the start task */
(void *) 0,
(OS_STK *)&AppTaskStartStk[APP_CFG_TASK_START_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_START_PRIO,
(INT16U ) APP_CFG_TASK_START_PRIO,
(OS_STK *)&AppTaskStartStk[0],
(INT32U ) APP_CFG_TASK_START_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
#if (OS_TASK_NAME_EN > 0)
OSTaskNameSet(APP_CFG_TASK_START_PRIO, (INT8U *)"Start", &err);
#endif
OSStart(); /* Start multitasking (i.e. give control to uC/OS-II) */
while (1) {
;
}
}
/*$PAGE*/
/*
*********************************************************************************************************
* App_TaskStart()
*
* Description : Startup task example code.
*
* Arguments : p_arg Argument passed by 'OSTaskCreate()'.
*
* Returns : none.
*
* Created by : main().
*
* Notes : (1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
* used. The compiler should not generate any code for this statement.
*********************************************************************************************************
*/
static void AppTaskStart (void *p_arg)
{
CPU_INT32U cpu_clk_freq;
CPU_INT32U cnts;
(void)p_arg; /* See Note #1 */
(void)&p_arg;
BSP_Init(); /* Initialize BSP functions */
cpu_clk_freq = BSP_SysClkFreqGet(); /* Determine SysTick reference freq. */
cnts = cpu_clk_freq /* Determine nbr SysTick increments */
/ (CPU_INT32U)OS_TICKS_PER_SEC;
OS_CPU_SysTickInit(cnts);
CPU_Init(); /* Initialize the uC/CPU services */
#if (OS_TASK_STAT_EN > 0)
OSStatInit(); /* Determine CPU capacity */
#endif
Mem_Init();
#ifdef CPU_CFG_INT_DIS_MEAS_EN
CPU_IntDisMeasMaxCurReset();
#endif
/* <20><>usr bsp <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> */
usr_bsp_set_sysclock(cpu_clk_freq);
/* <20><>ʼ<EFBFBD><CABC>usrbsp */
usr_bsp_sys_init();
/* <20><>ʼ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> */
usr_drv_sys_init();
/* <20>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> */
usr_task_sys_init();
AppTaskCreate(); /* Creates all the necessary application tasks. */
while (DEF_ON) {
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
bsp_run_led(0);
OSTimeDly(1000);
bsp_run_led(1);
OSTimeDly(1000);
}
}
/*
*********************************************************************************************************
* AppTaskCreate()
*
* Description : Create the application tasks.
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : AppTaskStart()
*
* Note(s) : none.
*********************************************************************************************************
*/
static void AppTaskCreate (void)
{
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_watchdog,
(void *) 0,
(OS_STK *)&AppTaskUsrWatchdogStk[APP_CFG_TASK_USR_WATCHDOG_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_WATCHDOG_PRIO,
(INT16U ) APP_CFG_TASK_USR_WATCHDOG_PRIO,
(OS_STK *)&AppTaskUsrWatchdogStk[0],
(INT32U ) APP_CFG_TASK_USR_WATCHDOG_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_timer,
(void *) 0,
(OS_STK *)&AppTaskUsrTimerStk[APP_CFG_TASK_USR_TIMER_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_TIMER_PRIO,
(INT16U ) APP_CFG_TASK_USR_TIMER_PRIO,
(OS_STK *)&AppTaskUsrTimerStk[0],
(INT32U ) APP_CFG_TASK_USR_TIMER_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>RTC<54><43><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_rtc,
(void *) 0,
(OS_STK *)&AppTaskUsrRtcStk[APP_CFG_TASK_USR_RTC_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_RTC_PRIO,
(INT16U ) APP_CFG_TASK_USR_RTC_PRIO,
(OS_STK *)&AppTaskUsrRtcStk[0],
(INT32U ) APP_CFG_TASK_USR_RTC_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_network,
(void *) 0,
(OS_STK *)&AppTaskUsrNetworkStk[APP_CFG_TASK_USR_NETWORK_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_NETWORK_PRIO,
(INT16U ) APP_CFG_TASK_USR_NETWORK_PRIO,
(OS_STK *)&AppTaskUsrNetworkStk[0],
(INT32U ) APP_CFG_TASK_USR_NETWORK_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_heart,
(void *) 0,
(OS_STK *)&AppTaskUsrHeartStk[APP_CFG_TASK_USR_HEART_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_HEART_PRIO,
(INT16U ) APP_CFG_TASK_USR_HEART_PRIO,
(OS_STK *)&AppTaskUsrHeartStk[0],
(INT32U ) APP_CFG_TASK_USR_HEART_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_camera,
(void *) 0,
(OS_STK *)&AppTaskUsrCameraStk[APP_CFG_TASK_USR_CAMERA_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_CAMERA_PRIO,
(INT16U ) APP_CFG_TASK_USR_CAMERA_PRIO,
(OS_STK *)&AppTaskUsrCameraStk[0],
(INT32U ) APP_CFG_TASK_USR_CAMERA_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_inside_para_sensor,
(void *) 0,
(OS_STK *)&AppTaskUsrInsideSensorStk[APP_CFG_TASK_USR_INSIDE_SENSOR_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_INSIDE_SENSOR_PRIO,
(INT16U ) APP_CFG_TASK_USR_INSIDE_SENSOR_PRIO,
(OS_STK *)&AppTaskUsrInsideSensorStk[0],
(INT32U ) APP_CFG_TASK_USR_INSIDE_SENSOR_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_many_para_sensor,
(void *) 0,
(OS_STK *)&AppTaskUsrManyParaSensorStk[APP_CFG_TASK_USR_MANY_PARA_SENSOR_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_MANY_PARA_SENSOR_PRIO,
(INT16U ) APP_CFG_TASK_USR_MANY_PARA_SENSOR_PRIO,
(OS_STK *)&AppTaskUsrManyParaSensorStk[0],
(INT32U ) APP_CFG_TASK_USR_MANY_PARA_SENSOR_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>IMU<4D><55><EFBFBD><EFBFBD> */
OSTaskCreateExt((void (*)(void *)) usr_task_imu,
(void *) 0,
(OS_STK *)&AppTaskUsrImuSensorStk[APP_CFG_TASK_USR_IMU_SENSOR_STK_SIZE - 1],
(INT8U ) APP_CFG_TASK_USR_IMU_SENSOR_PRIO,
(INT16U ) APP_CFG_TASK_USR_IMU_SENSOR_PRIO,
(OS_STK *)&AppTaskUsrImuSensorStk[0],
(INT32U ) APP_CFG_TASK_USR_IMU_SENSOR_STK_SIZE,
(void *) 0,
(INT16U )(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR));
}