#ifndef APP_INIT_H #define APP_INIT_H #include "FreeRTOS.h" #include "task.h" #include "publicdata/public_define.h" //任务最小堆栈空间大小 --注意单位是字节!!!! #define TASK_SIZE_SIZE_512 (configMINIMAL_STACK_SIZE*4) //512字节 #define TASK_SIZE_SIZE_1024 (configMINIMAL_STACK_SIZE*8) //1024字节=1k #define TASK_SIZE_SIZE_2048 (TASK_SIZE_SIZE_1024*2) //2048字节=2k #define TASK_SIZE_SIZE_3k (TASK_SIZE_SIZE_1024*3) //3k #define TASK_SIZE_SIZE_4k (TASK_SIZE_SIZE_1024*4) //4k #define TASK_SIZE_SIZE_5k (TASK_SIZE_SIZE_1024*5) //5k #define TASK_SIZE_SIZE_6k (TASK_SIZE_SIZE_1024*6) //6k #define TASK_SIZE_SIZE_7k (TASK_SIZE_SIZE_1024*7) //7k #define TASK_SIZE_SIZE_8k (TASK_SIZE_SIZE_1024*8) //8k //任务延时周期 #define TASK_SLEEP_MS_1000 (1000U) #define TASK_SLEEP_MS_500 (500U) #define TASK_SLEEP_MS_300 (300U) #define TASK_SLEEP_MS_200 (200U) #define TASK_SLEEP_MS_150 (150U) #define TASK_SLEEP_MS_100 (100U) #define TASK_SLEEP_MS_50 (50U) #define TASK_SLEEP_MS_30 (30U) #define TASK_SLEEP_MS_20 (20U) #define TASK_SLEEP_MS_10 (10U) #define TASK_SLEEP_MS_5 (5U) #define TASK_SLEEP_MS_1 (1U) typedef struct { char task_name[16]; UBaseType_t task_prio; uint16_t task_size; uint16_t task_timer; TaskFunction_t task_entry; void *task_arg; } MY_TASK_DATA; typedef enum { TASK_ID_EthIf = 0, TASK_ID_TCPIP, TASK_ID_BmsComm, TASK_ID_DataColl, TASK_ID_FlowCtrl, TASK_ID_FaultCheck, TASK_ID_MduComm, TASK_ID_SubComm, TASK_ID_PlatComm, #if (MY_SHELL_EN) TASK_ID_MyShell, #endif TASK_ID_UI, TASK_ID_WATCHDOG, TASK_ID_MeterColl, TASK_ID_Meterfee, TASK_ID_MyLog, #if (TCP_DEBUG_EN) TASK_ID_TcpSer, #endif TASK_ID_EthLink, MY_TASK_NUM } TASK_ID; extern const MY_TASK_DATA my_task_data[MY_TASK_NUM]; /* lwIP TCP/IP 线程:任务表与 lwipopts.h 中 TCPIP_THREAD_* 须一致(lwipopts 不可再 include 本头文件) */ #define MY_TCPIP_NAME (my_task_data[TASK_ID_TCPIP].task_name) #define MY_TCPIP_PRIO (my_task_data[TASK_ID_TCPIP].task_prio) #define MY_TCPIP_SIZE (my_task_data[TASK_ID_TCPIP].task_size) /* 兼容参考工程的任务访问宏 */ #ifndef mSleep #define mSleep(x) (vTaskDelay(pdMS_TO_TICKS((x)))) #endif #define MY_TASK_NEW(task_id, func, para) \ xTaskCreate((func), \ my_task_data[(task_id)].task_name, \ (uint16_t)(my_task_data[(task_id)].task_size / sizeof(StackType_t)), \ (para), \ my_task_data[(task_id)].task_prio, \ NULL) #define MY_SLEEP_TIME(task_id) mSleep(my_task_data[(task_id)].task_timer) #define MY_GET_SLEEP_TIME(task_id) (my_task_data[(task_id)].task_timer) #define MY_GET_TASK_NAME(task_id) (my_task_data[(task_id)].task_name) void app_os_init(void); void delay_ms(uint32_t ms); void v_fault_blink_code_loop(uint32_t blink_count); #endif