This commit is contained in:
2026-04-23 10:50:18 +08:00
commit a436fda935
844 changed files with 272643 additions and 0 deletions

843
RTX5_20220316/main/main.c Normal file
View File

@ -0,0 +1,843 @@
/*----------------------------------------------------------------------------
ͷ<>ļ<EFBFBD>
*---------------------------------------------------------------------------*/
#include "RTE_Components.h"
#include CMSIS_device_header
//#include "cmsis_os2.h"
#include "bsp.h"
/**********************************************************************************************************
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**********************************************************************************************************
*/
void USERTaskCreate (void);
void USER_Task_LinkStatus(void *argument); //WIFI<46><49><EFBFBD><EFBFBD>״̬
void USER_Task_WIFI(void *argument);//ESP8266
void USER_Task_MSG(void *argument);//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
void USERTaskStart(void *argument);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void USERTask_Process1(void *argument);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>й<EFBFBD><D0B9><EFBFBD>
void USERTask_Resume(void *argument);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void User_Task_Test(void *argument);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t IsAppointmentRight(void);
/*
**********************************************************************************************************
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
**********************************************************************************************************
*/
ITStatus Wake_way=RESET;//<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ʽ 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD>0<EFBFBD><30>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>
u8 Enable_SDI_RS232=0; //0ʹ<30><CAB9>SDI 1ʹ<31>ܴ<EFBFBD><DCB4><EFBFBD>232<33><32>esp8266<36>Ĵ<EFBFBD><C4B4><EFBFBD>232<33><32>
u8 LinkStatus=0; //WIFI<46><49><EFBFBD><EFBFBD>״̬<D7B4><CCAC>2<EFBFBD><32><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>Ϊδ<CEAA><CEB4><EFBFBD><EFBFBD>
u8 Creat_WIFI=0;
u8 Creat_BC25=0;
TASKRUNS TASKRUNSS; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>־
u32 wut_rtc_s=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RTCʱ<43><CAB1>
TASKFISHED TASKFISHEDS;
u8 WKUP_PIN_Status=0;//<2F><><EFBFBD><EFBFBD>״̬ 1<><31><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><30><CEB4><EFBFBD><EFBFBD>
u8 Check_WKUP_key=0;
u32 time__sta_bc25=0;//BC25<32><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
u32 time__sta_pro1=0;//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
char rtc_data[15]={0},rtc_time[15]={0},CLOSE_ALARM = 0;
extern char name[],hhmmsss[],yymmddd[];
char NOWtime[15];
uint32_t appointment_y,appointment_s,NOW_y,NOW_s;
/*
****************************************************************************************************
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
******************************************************************************************************
*/
const osThreadAttr_t ThreadLinkStatus_Attr =
{
.name = "LinkStatus",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 512,
};
const osThreadAttr_t ThreadStart_Attr =
{
.name = "ThreadStart",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 512,
};
const osThreadAttr_t ThreadWIFI_Attr =
{
.name = "ThreadWIFI",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 1024,
};
const osThreadAttr_t ThreadMSG_Attr =
{
.name = "ThreadMSG",
.attr_bits = osThreadDetached,
.priority = osPriorityNormal,
.stack_size = 1024,
};
const osThreadAttr_t ThreadTest_Attr =
{
.name = "ThreadTest",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 2048,
};
static const osEventFlagsAttr_t EventFlagAttr_PROCESS = {
.name = "PROCESS_Events",
};
static const osEventFlagsAttr_t EventFlagAttr_Start = {
.name = "Start_Events",
};
static const osEventFlagsAttr_t EventFlagAttr_Fished = {
.name = "Fished_Events",
};
const osThreadAttr_t ThreadUSERTask_Resume_Attr =
{
.name = "ThreadUSERTask_Resume",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 1024,
};
const osThreadAttr_t ThreadPROCESS1_Attr =
{
.name = "ThreadPROCESS1",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 2048,
};
const osThreadAttr_t ThreadBC25_Attr =
{
.name = "ThreadBC25",
.attr_bits = osThreadDetached,
.priority = osPriorityHigh2,
.stack_size = 2048,
};
static const osMutexAttr_t WIFI_Mutex_Attr = {
.name = "WIFI_Multiplex",
};
static const osMutexAttr_t SDI_Mutex_Attr = {
.name = "SDI_Multiplex",
};
static const osMutexAttr_t TF_Mutex_Attr = {
.name = "TF_Multiplex",
//.attr_bits = osMutexRobust,
};
static const osSemaphoreAttr_t Proces1_Semaphore_Attr = {
.name = "Proces1_Sem",
};
static const osSemaphoreAttr_t BC25_Semaphore_Attr = {
.name = "BC25_Sem",
};
/*
*********************************************************************************************
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
***********************************************************************************************
*/
osThreadId_t ThreadIdSMSG = NULL;
osThreadId_t ThreadIdTaskLinkStatus = NULL;
osThreadId_t ThreadIdTaskBC25 = NULL;
osThreadId_t ThreadIdWIFI = NULL;
osThreadId_t ThreadIdStart = NULL;
osThreadId_t ThreadIdProcsee1 = NULL;
osThreadId_t ThreadIdUSERTask_Resume = NULL;
osThreadId_t ThreadIdTest = NULL;
osSemaphoreId_t Process1ID_Semaphore; // semaphore id
osSemaphoreId_t BC25ID_Semaphore; // semaphore id
osEventFlagsId_t EventFlagID_PROCESS=NULL; //<2F><><EFBFBD>̱<EFBFBD>־
osEventFlagsId_t EventFlagID_Start=NULL;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
osEventFlagsId_t EventFlagID_Fished=NULL;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
osMutexId_t WIFI_MutexID=NULL;
osMutexId_t SDI_MutexID=NULL;
osMutexId_t TFcard_MutexID=NULL;
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>main()
*<2A><> <20>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
int main (void) {
SCB->VTOR = FLASH_BASE | 0x10000; /* Vector Table Relocation in Internal FLASH. */
// System Initialization
SystemCoreClockUpdate();
// ...
bsp_init();
osKernelInitialize(); // Initialize CMSIS-RTOS
EventFlagID_PROCESS = osEventFlagsNew(&EventFlagAttr_PROCESS);
EventFlagID_Start = osEventFlagsNew(&EventFlagAttr_Start);
EventFlagID_Fished = osEventFlagsNew(&EventFlagAttr_Fished);
Process1ID_Semaphore = osSemaphoreNew(1, 1, &Proces1_Semaphore_Attr );
BC25ID_Semaphore = osSemaphoreNew(1, 1, &BC25_Semaphore_Attr );
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ThreadIdStart = osThreadNew(USERTaskStart, NULL, &ThreadStart_Attr);
osKernelStart(); // Start thread execution
for (;;)
{
}
}
uint8_t IsAppointmentRight(void)
{
GetRTC(hhmmsss,yymmddd);
NOWtime[0] = '2';
NOWtime[1] = '0';
memcpy(&NOWtime[2],yymmddd,6);
NOW_y = atoi(NOWtime);
memset(NOWtime,0,15);
memcpy(NOWtime,hhmmsss,6);
NOW_s = atoi(NOWtime);
memset(NOWtime,0,15);
memcpy(NOWtime,Init_Data_Equipment.appointment_time,8);
appointment_y = atoi(NOWtime);
memset(NOWtime,0,15);
memcpy(NOWtime,&Init_Data_Equipment.appointment_time[8],6);
appointment_s = atoi(NOWtime);
if(NOW_y > appointment_y)
{
return 0;
}
else if(NOW_y < appointment_y)
{
return 1;
}
else
{
if(NOW_s > appointment_s)
{
return 0;
}
else
{
return 1;
}
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USER_Task_BC25()
*<2A><> <20>ܣ<EFBFBD>NBģ<42><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USER_Task_BC25(void *argument)
{
u8 i=0;
u32 BC25_SIZE=0;
osStatus_t BC25_Thread_status;
while(1)
{
osSemaphoreAcquire(BC25ID_Semaphore, osWaitForever);
time__sta_bc25=osKernelGetTickCount ();//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
TASKRUNSS.BC25_RUN=1;
BC25_Status.socket=0;
//u5_printf("BC25_Start\r\n");
for(i=0;i<5;i++)
{
BC25_Init();
if(BC25_Status.netstatus==1)
{
i=6;
BC25_CloseSocket();//<2F>ر<EFBFBD><D8B1><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BC25_CreateSokcet(Init_Data_Equipment.Bc25_Ip,Init_Data_Equipment.Bc25_Port);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
if(BC25_Status.cpin==0)//<2F><><EFBFBD><EFBFBD>ûװ<C3BB><D7B0><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
i=6;
}
i++;
}
USART2_ReceiveBuff_Clear();
printf("AT+CGPADDR?\r\n");
//delay_ms(500);
//u5_printf("IP:%s\r\n",(const char*)USART2_RX_BUF);
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFread_BIT_5);
if(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_TFstore_BIT_6)
{
osDelay(3000);
}
if(BC25_Status.netstatus==1)
{
i=0;
BC25_SIZE=0;
while((BC25_SIZE<=30)&(i<50))
{
i++;
delay_ms(5);
BC25_SIZE=txt_size_read("BC25");
}
if(BC25_SIZE>30)
{
//u5_printf("BC25_txt_size:%ld\r\n",BC25_SIZE);
FATFS_Read_TF("BC25",0,BC25_SIZE);//<2F><>ȡTF<54><46>¼<EFBFBD><C2BC><EFBFBD>ݣ<EFBFBD>ͨ<EFBFBD><CDA8>BC25<32><35><EFBFBD><EFBFBD>
i=0;
while(i<10)
{
osDelay(1000);
if(strstr((char*)USART2_RX_BUF,"par")!=NULL)
{
USART2_Recieve_Ide();
USART2_ReceiveBuff_Clear();
}
i++;
}
}
//u5_printf("BC25.txt send finish\r\n");
}
osEventFlagsClear(EventFlagID_PROCESS,EVENT_TFread_BIT_5);
BC25_POWEROFF();
TASKRUNSS.BC25_RUN=0;
//u5_printf("Terminate TaskBC25\r\n");
i=0;
osSemaphoreRelease(BC25ID_Semaphore);
BC25_Thread_status=osThreadTerminate(ThreadIdTaskBC25);
//u5_printf("Terminate TaskBC25............... fail\r\n");
while((BC25_Thread_status!=osOK)&(i<10))
{
//u5_printf("BC25_Thread_status:%d\r\n",BC25_Thread_status);
BC25_Thread_status=osThreadTerminate(ThreadIdTaskBC25);
i++;
}
//BC25_Thread_status=osThreadTerminate(ThreadIdTaskBC25);
osDelay(500);
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USER_Task_LinkStatus()
*<2A><> <20>ܣ<EFBFBD>WIFI<46><49>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>ͬʱ<CDAC>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>пͻ<D0BF><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USER_Task_LinkStatus(void *argument)
{
u8 i=0;
// osDelay(20000);//<2F>ӳٵȴ<D9B5><C8B4><EFBFBD><EFBFBD><EFBFBD>WIFI
//osEventFlagsWait(EventFlagID_PROCESS,EVENT_WIFIcreat_BIT_9,osFlagsWaitAll,200000 );
while(1)
{
uint8_t Temp_LinkStatus=0;
LinkStatus=2;
for(i=0;i<4;i++)
{
osMutexAcquire(WIFI_MutexID,osWaitForever);
Temp_LinkStatus=ESP8266_Get_LinkStatus();
if(Temp_LinkStatus==2)
{
i=0;
ESP8266_SendString(DISABLE,"Heartbeat,*",11,0);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
osMutexRelease(WIFI_MutexID);
osDelay(60000);
//osDelay(30000);
}
//LinkStatus=0;
if(LinkStatus!=2)
{
osEventFlagsSet(EventFlagID_PROCESS,EVENT_LinkStatus_BIT_3);
osEventFlagsClear(EventFlagID_PROCESS,EVENT_WIFIcreat_BIT_9);
osThreadTerminate(ThreadIdTaskLinkStatus);
osThreadTerminate(ThreadIdWIFI);
}
osDelay(5);
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USER_Task_WIFI()
*<2A><> <20>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>WIFI<46><49><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD>ѯ<EFBFBD>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>͵<EFBFBD>ָ<EFBFBD><D6B8>
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USER_Task_WIFI(void *argument)
{
while(1)
{
if(!(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_WIFIcreat_BIT_9))
{
ESP8266_AP_TCPServer_Config(Init_Data_Equipment.ESP8266_AP_SSIDs,
Init_Data_Equipment.ESP8266_AP_PWDs,
Init_Data_Equipment.ESP8266_AP_Ports);
// Creat_WIFI=1;
PWR_CTRL5V_H; //<2F><><EFBFBD><EFBFBD>5V 9V<39><56>Դ
//PWR_CTRL3V3_H;
osEventFlagsSet(EventFlagID_PROCESS,EVENT_WIFIcreat_BIT_9);
__nop();
}
osMutexAcquire(WIFI_MutexID,osWaitForever);
USART4_Recieve_Ide();
osMutexRelease(WIFI_MutexID);
osDelay(20);
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USERTask_Process1()
*<2A><> <20>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD>
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USERTask_Process1(void *argument)
{
u8 i=0;
//char Process1_Buf[300]={'\0'};
osStatus_t PRO1_Thread_status;
while(1)
{
osSemaphoreAcquire(Process1ID_Semaphore, osWaitForever);
time__sta_pro1=osKernelGetTickCount ();//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
TASKRUNSS.PROS1_RUN=1;
GetRTC(rtc_time,rtc_data);
sprintf(name,"%s_%s.txt",rtc_data,Init_Data_Equipment.Measure_Interval);
if(IS_FIRST_SAVE)
{
memcpy(rtc_data,&Init_Data_Equipment.appointment_time[2],6);
memcpy(rtc_time,&Init_Data_Equipment.appointment_time[8],6);
IS_FIRST_SAVE = 0;
}
L76X_POWER_ON(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Դ
ADC15_POWERON(); //<2F><><EFBFBD><EFBFBD>ADC<44><43>Դ
delay_ms(10); //<2F><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>͵<EFBFBD>ѹʱ<D1B9><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PWR_CTRL5V_H; //<2F><><EFBFBD><EFBFBD>5V 9V<39><56>Դ
sdi12_process();
ADC15_Process();
L76C_Process();
Common_Data_Pack();//<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
if(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_TFread_BIT_5)//BC25<32><35>Զ<EFBFBD><D4B6>
{
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
//u5_printf("stroe wait\r\n");
osEventFlagsWait(EventFlagID_PROCESS,EVENT_TFread2_BIT_7,osFlagsWaitAll,10000 );
//u5_printf("TF data entry1\r\n");
Data_Write_TF();
//u5_printf("stroe finish\r\n");
osEventFlagsClear(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFstore2_BIT_8);
}
else
{
//u5_printf("TF data entry2\r\n");
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
Data_Write_TF();
osEventFlagsClear(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
//u5_printf("TF data quit2\r\n");
}
// if(LinkStatus == 2)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WIFI<46><49><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD>λ<EFBFBD><CEBB>
// {
// sprintf(Process1_Buf,"%s%s%s,*","Pub,",data_common1.Pack_len,data_common1.Pack_data);
// osMutexAcquire(WIFI_MutexID,osWaitForever);
// ESP8266_SendString(DISABLE,Process1_Buf,strlen(Process1_Buf),0);
// osMutexRelease(WIFI_MutexID);
// }
//u5_printf("Terminate Procsee1\r\n");
// L76X_POWER_OFF();
// ADC15_POWEROFF();
// PWR_CTRL5V_L;
osSemaphoreRelease(Process1ID_Semaphore);
TASKRUNSS.PROS1_RUN=0;
osThreadTerminate(ThreadIdProcsee1);
//u5_printf("Terminate Procsee1 fail\r\n");
PRO1_Thread_status=osThreadTerminate(ThreadIdProcsee1);
while((PRO1_Thread_status!=osOK)&(i<10))
{
//u5_printf("PRO1_Thread_status:%d\r\n",PRO1_Thread_status);
PRO1_Thread_status=osThreadTerminate(ThreadIdProcsee1);
i++;
}
osDelay(1000);
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USERTask_Resume()
*<2A><> <20>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*<2A><> <20>룺ȫ<EBA3BA>ֱ<EFBFBD><D6B1><EFBFBD> MYITStatus1
* ȫ<>ֱ<EFBFBD><D6B1><EFBFBD> WKUP_PIN_Status
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USERTask_Resume(void *argument)
{
u32 measurt_idv_set;
osThreadState_t Thread_Stasus;
while(1)
{
if(MYITStatus1.AlarmA_ITStatus == 1)
{
//u5_printf("TASKRUNSS.BC25_RUN:%d\r\n",TASKRUNSS.BC25_RUN);
Thread_Stasus=osThreadGetState(ThreadIdTaskBC25);
//u5_printf("Thread_Stasus_bc25:%d\r\n",Thread_Stasus);
if((Thread_Stasus==osThreadError )||(TASKRUNSS.BC25_RUN!=1))
{
//u5_printf("USER_Task_BC25 creat\r\n");
ThreadIdTaskBC25 = osThreadNew(USER_Task_BC25, NULL, &ThreadBC25_Attr);
}
//u5_printf("config AlarmA\r\n");
MYITStatus1.AlarmA_ITStatus=0;
RTC_AlarmAConfig(get_pubidv());
}
if(MYITStatus1.AlarmB_ITStatus == 1)
{
Thread_Stasus=osThreadGetState(ThreadIdProcsee1);
//u5_printf("PROSS1_Thread_Stasus:%d\r\n",Thread_Stasus);
if(Thread_Stasus==osThreadError )
{
//u5_printf("USERTask_Process1 creat\r\n");
ThreadIdProcsee1 = osThreadNew(USERTask_Process1, NULL, &ThreadPROCESS1_Attr);
}
MYITStatus1.AlarmB_ITStatus=0;
Measure_Ap_E();
//Write_Equipment_Par(Init_Data_Equipment); //<2F>ػ<EFBFBD><D8BB>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
CLOSE_ALARM = 1;
}
if(MYITStatus1.WUT_ITStatus == 1)
{
//u5_printf("USERTask_Process1 start\r\n");
Thread_Stasus=osThreadGetState(ThreadIdProcsee1);
//u5_printf("PROSS1_Thread_Stasus:%d\r\n",Thread_Stasus);
if((Thread_Stasus==osThreadError )||(TASKRUNSS.PROS1_RUN!=1))
{
//u5_printf("USERTask_Process1 creat\r\n");
// Thread_Stasus=osThreadGetState(ThreadIdTaskBC25);
// if(Thread_Stasus == 1)
// {
// osDelay(1000);
// }
ThreadIdProcsee1 = osThreadNew(USERTask_Process1, NULL, &ThreadPROCESS1_Attr);
}
MYITStatus1.WUT_ITStatus=0;
if(measurt_idv_set<1)
{
measurt_idv_set=1;
}
RtcWakeUpConfig(get_meaidv() - 1);
// if(CLOSE_ALARM)
// {
// CLOSE_ALARM = 0;
// RtcWakeUpConfig(get_meaidv() - 4);
// }
// else
// {
// RtcWakeUpConfig(get_meaidv() - 2);
// }
wut_rtc_s=RTC_GetSeconds()+measurt_idv_set*60;
if(wut_rtc_s>86400)wut_rtc_s-=86400;
}
if(1)//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>MYITStatus1.WKUP1_ITStatus == 1
{
//if(WKUP_PIN_Status==4)//<2F><><EFBFBD><EFBFBD>10S<30><53><EFBFBD>ϣ<EFBFBD><CFA3>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(key_time==200)//<2F><><EFBFBD><EFBFBD>10S<30><53><EFBFBD>ϣ<EFBFBD><CFA3>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
MYITStatus1.WKUP1_ITStatus =0;
//u5_printf("WKUP_PIN_10S\r\n");
Write_Factory_Par();
}
if((key_time>=30)|(Check_WKUP_key))//<2F><><EFBFBD><EFBFBD>3S<33><53><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>WIFI
{
Thread_Stasus=osThreadGetState(ThreadIdTaskLinkStatus);
if(Thread_Stasus==osThreadError )
{
//u5_printf("Create Wifi Task\r\n");
ThreadIdWIFI = osThreadNew(USER_Task_WIFI, NULL, &ThreadWIFI_Attr);
ThreadIdTaskLinkStatus = osThreadNew(USER_Task_LinkStatus, NULL, &ThreadLinkStatus_Attr);
}
MYITStatus1.WKUP1_ITStatus =0;
Check_WKUP_key=0;
//u5_printf("WKUP_PIN_3S\r\n");
}
}
if(MYITStatus1.WKUP_POWBUTTON == 1)//<2F><>Դ<EFBFBD>ϵ<EFBFBD>
{
MYITStatus1.WKUP_POWBUTTON=0;
if((Init_Data_Equipment.measure_mode[0]=='1') && (IsAppointmentRight()))//ģʽΪ1<CEAA><31>ԤԼ<D4A4><D4BC><EFBFBD><EFBFBD><><D6BB><EFBFBD><EFBFBD>ԤԼ<D4A4><D4BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
{
Measure_Ap_S();
TASKRUNSS.POW_RUN=0;//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԤԼʱ<D4BC><CAB1>
}else
{
Thread_Stasus=osThreadGetState(ThreadIdProcsee1);
if(Thread_Stasus==osThreadError )
{
ThreadIdProcsee1 = osThreadNew(USERTask_Process1, NULL, &ThreadPROCESS1_Attr);
}
RtcWakeUpConfig(get_meaidv() - 1);
RTC_AlarmAConfig(get_pubidv());
}
}
if(MYITStatus1.WKUP_MEA_WIFI == 1)//WIFI<46><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Thread_Stasus=osThreadGetState(ThreadIdProcsee1);
if(Thread_Stasus==osThreadError )
{
ThreadIdProcsee1 = osThreadNew(USERTask_Process1, NULL, &ThreadPROCESS1_Attr);
}
MYITStatus1.WKUP_MEA_WIFI=0;
}
if(MYITStatus1.WKUP_Test_WIFI == 1)//WIFI<46><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Thread_Stasus=osThreadGetState(ThreadIdTest);
if((Thread_Stasus==osThreadError )||(!(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_Test_BIT_10)))
{
ThreadIdTest=osThreadNew(User_Task_Test,NULL,&ThreadTest_Attr);
}
MYITStatus1.WKUP_Test_WIFI=0;
}
osDelay(10);
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USER_Task_MSG()
*<2A><> <20>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD>ģʽ
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USER_Task_MSG(void *argument)
{
osDelay(500);//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(1)
{
if(osThreadGetState(ThreadIdTaskBC25)==osThreadError)
{
TASKFISHEDS.BC25_FIS=1;
}
else
TASKFISHEDS.BC25_FIS=0;
if(osThreadGetState(ThreadIdProcsee1)==osThreadError)
{
TASKFISHEDS.PROS1_FIS=1;
}
else
{
TASKFISHEDS.PROS1_FIS=0;
}
if(osThreadGetState(ThreadIdTaskLinkStatus)==osThreadError)
{
TASKFISHEDS.WIFILink_FIS=1;
}
else
{
TASKFISHEDS.WIFILink_FIS=0;
}
//u5_printf("%d,%d,%d\r\n",TASKFISHEDS.PROS1_FIS,TASKFISHEDS.BC25_FIS,TASKFISHEDS.WIFILink_FIS);
if(TASKFISHEDS.BC25_FIS &
TASKFISHEDS.PROS1_FIS &
TASKFISHEDS.WIFILink_FIS &
(!MYITStatus1.WUT_ITStatus)&
(!MYITStatus1.AlarmA_ITStatus&
!WKUP_KD )
)
{
if((Init_Data_Equipment.measure_mode[0]==0x31) && (IsAppointmentRight()))//<2F><><EFBFBD><EFBFBD>ģʽΪ1<CEAA><31>ԤԼ<D4A4><D4BC><EFBFBD><EFBFBD>
{
RTC_WakeUpCmd(DISABLE);//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4BBBD><EFBFBD><EFBFBD><EFBFBD>ݲɼ<DDB2>
RTC_AlarmCmd(RTC_Alarm_A, DISABLE);//<2F><><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>
}
//u5_printf("Procsee1_status:%d\r\n",osThreadGetState(ThreadIdProcsee1));
//u5_printf("BC25_status:%d\r\n",osThreadGetState(ThreadIdTaskBC25));
EXTI_ClearITPendingBit(EXTI_Line13);
RTC_ClearITPendingBit(RTC_IT_WUT);
EXTI_ClearITPendingBit(EXTI_Line20);
RTC_ClearITPendingBit(RTC_IT_ALRB);
RTC_ClearITPendingBit(RTC_IT_ALRA);
EXTI_ClearITPendingBit(EXTI_Line17);
PWR_EnterSTANDBYMode();
}
osDelay(50);
}
}
void User_Task_Test(void *argument)
{
char Test_Buf[400];
int len;
char rtc_data_test[15]={0},rtc_time_test[15]={0};
u32 tf_total,tf_free;
while(1)
{
osEventFlagsSet(EventFlagID_PROCESS,EVENT_Test_BIT_10);
//u5_printf("User_Task_Test_start\r\n");
//PWR_CTRL3V3_H; //<2F><><EFBFBD><EFBFBD>3.3V<EFBFBD>ܵ<EFBFBD>Դ
osDelay(1000);
TASKRUNSS.Test_RUN=1;
GetRTC(rtc_time_test,rtc_data_test);
/************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD>ʼ******************************/
if(!TASKRUNSS.PROS1_RUN)
{
osSemaphoreAcquire(Process1ID_Semaphore, osWaitForever);
GetRTC(rtc_time,rtc_data);
L76X_POWER_ON(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>Դ
ADC15_POWERON(); //<2F><><EFBFBD><EFBFBD>ADC<44><43>Դ
PWR_CTRL5V_H; //<2F><><EFBFBD><EFBFBD>5V 9V<39><56>Դ
sdi12_process();
ADC15_Process();
L76C_Process();
}
else
{
osSemaphoreAcquire(Process1ID_Semaphore, osWaitForever);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>
}
sprintf(rtc_data,"%s",rtc_data_test);
sprintf(rtc_time,"%s",rtc_time_test);
Common_Data_Pack();//<2F><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
/************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD>*****************************/
/*************************Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD>ʼ*****************************/
if(!TASKRUNSS.BC25_RUN)
{
osSemaphoreAcquire(BC25ID_Semaphore, osWaitForever);
BC25_Init();
}
else
{
//osSemaphoreAcquire(BC25ID_Semaphore, osWaitForever);
}
/*************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*****************************/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Pub,<2C><><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD>ţ<EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>IOT_Cpin,IOT_Csq,IOT_Net,Tf_Tol,Tf_Free
if(osEventFlagsGet(EventFlagID_PROCESS)&EVENT_TFread_BIT_5)//BC25<32><35>Զ<EFBFBD><D4B6>
{
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
//u5_printf("test stroe wait\r\n");
osEventFlagsWait(EventFlagID_PROCESS,EVENT_TFread2_BIT_7,osFlagsWaitAll,10000 );
//u5_printf("test TF data entry1\r\n");
exf_getfree("0", &tf_total, &tf_free);
len = strlen(data_common1.Pack_data);
sprintf(data_common1.Pack_data+len,",%d,%d,%d,%ld,%ld",BC25_Status.cpin,BC25_Status.CSQ,BC25_Status.netstatus,tf_total,tf_free);
Write_Test();
//u5_printf("test stroe finish\r\n");
osEventFlagsClear(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFstore2_BIT_8);
}
else
{
osEventFlagsSet(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
exf_getfree("0", &tf_total, &tf_free);
len = strlen(data_common1.Pack_data);
sprintf(data_common1.Pack_data+len,",%d,%d,%d,%ld,%ld",BC25_Status.cpin,BC25_Status.CSQ,BC25_Status.netstatus,tf_total,tf_free);
Write_Test();
osEventFlagsClear(EventFlagID_PROCESS,EVENT_TFstore_BIT_6);
}
sprintf(Test_Buf,"%s%d,%s,*","Pub,",strlen(data_common1.Pack_data)+2,data_common1.Pack_data);
//u5_printf("test_buf %s\r\n",Test_Buf);
osMutexAcquire(WIFI_MutexID,osWaitForever);
ESP8266_SendString(DISABLE,Test_Buf,strlen(Test_Buf),0);
osMutexRelease(WIFI_MutexID);
//<2F>ͷ<EFBFBD>
osSemaphoreRelease(BC25ID_Semaphore);
osSemaphoreRelease(Process1ID_Semaphore);
TASKRUNSS.Test_RUN=0;
osEventFlagsClear(EventFlagID_PROCESS,EVENT_Test_BIT_10);
osThreadTerminate(ThreadIdTest);
/*************************Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><CCBD><EFBFBD>*****************************/
}
}
/****************************************************
*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USERTaskCreate()
*<2A><> <20>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>񴴽<EFBFBD>
*<2A><> <20><EFBFBD><EBA3BA>
*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void USERTaskCreate(void)
{
EEPROM_ReadBytes(110,(u8*)Init_Data_Equipment.Pub_Mode,1);
WIFI_MutexID = osMutexNew(&WIFI_Mutex_Attr );
SDI_MutexID = osMutexNew(&SDI_Mutex_Attr );
TFcard_MutexID = osMutexNew(&TF_Mutex_Attr );
ThreadIdUSERTask_Resume = osThreadNew(USERTask_Resume, NULL, &ThreadUSERTask_Resume_Attr);
ThreadIdSMSG = osThreadNew(USER_Task_MSG, NULL, &ThreadMSG_Attr); //<2F>͹<EFBFBD><CDB9><EFBFBD>
}
/*********************************************************************************************************/
/*
*********************************************************************************************************
* <09><> <20><> <20><>: AppTaskStart()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD>
* <09><> <20><> <20><><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>time__sta_pro1
* Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>time__sta_bc25
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void USERTaskStart(void *argument)
{
u32 mea_idv_idl1,pub_idv_idl1;
uint8_t i=0;
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
USERTaskCreate();
while(1)
{
mea_idv_idl1=osKernelGetTickCount()-time__sta_pro1;
pub_idv_idl1=osKernelGetTickCount()-time__sta_bc25;
i++;
if(i>=10)
{
//u5_printf("mea_idv_idl1:%d\r\npub_idv_idl1:%d\r\n",mea_idv_idl1,pub_idv_idl1);
i=0;
}
if(LinkStatus == 2)
{
mea_idv_idl1=0;
pub_idv_idl1=0;
}
if((mea_idv_idl1>(get_meaidv()*1000+200000))&(LinkStatus != 2))//û<><C3BB>WIFI<46><49><EFBFBD><EFBFBD>+<2B><>ʱ
{
NVIC_SystemReset();
}
if((pub_idv_idl1>(get_pubidv()*1000+7200000))&(LinkStatus != 2))//û<><C3BB>WIFI<46><49><EFBFBD><EFBFBD>+<2B><>ʱ
{
NVIC_SystemReset();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>͸<EFBFBD>λ
}
osDelay(1000);
}
}
/***************************** END OF FILE *********************************/