#include "McuBspSys.h" #include "McuBspRtc.h" #include "McuBspTimer.h" #include "McuTaskFlash.h" #include "McuTaskImu.h" #include "McuTaskInPara.h" #include "McuTaskLowPower.h" #include "McuTaskManyPara.h" #include "McuTaskPosition.h" #include "McuTaskBlueTooth.h" #include "McuBspGpio.h" #include "BeiDouHtyDrv.h" #include "Usr_4GCatDtuDrv.h" #include #include /* 初始化任务 */ static void AppInit(void); /* APP的各任务 */ static void AppTask(void); int main(void) { uint8_t mode = 0; uint8_t qos; /* 初始化系统 */ McuBspSysInit(); McuTaskLowPowerInit(); /* 初始化RTC */ McuBspRtcInit(); McuTaskFlashInit(); /* 初始化4G */ McuDrv4GCatDtuInit(); /* 北斗初始化 */ //McuDrvBeiDouHtyInit(); /* 写入数据 */ McuTaskFlashWriteOpt("App Join Success\r\n", strlen("App Join Success\r\n")); /* 蓝牙任务初始化 */ McuTaskBlueToothInit(); AppInit(); mode = TaskBlueToothGetAppMode(); if (mode == 1) { /* 关闭北斗 */ McuDrvBeiDouHtyClosePower(); /* 打开4G通信 */ if (0 == McuDrv4GCatDtuPowerSta()) { McuDrv4GCatDtuOpenPower(); } HAL_Delay(60000); /* 判断4G信号质量 */ qos = McuDrv4GCatDtuSta(); if (qos > 0 && qos < 99) { /* 4G通信 */ } else { // /* 断开4G通信 */ // McuDrv4GCatDtuClosePower(); // /* 打开北斗通信 */ // if (0 == McuDrvBeiDouHtyPowerSta()) { // McuDrvBeiDouHtyOpenPower(); // } // HAL_Delay(60000); } McuTaskImuBeiDouAsk(); McuTaskInParaBeiDouAsk(); McuTaskManyParaBeiDouAsk(); McuTaskPositionBeiDouAsk(); } while (1) { AppTask(); /* 通知上位机,蓝牙进入低功耗模式 */ if (0 == TaskBlueToothGetBluetoothMode()) { if (1 == McuTaskLowPowerGetLowerPowerBlth()) { TaskBlueToothJoinLowPowerNoticePlat(); McuTaskLowPowerSetLowerPowerBlth(0); } } else { continue; } /* 判断是否有北斗任务在执行,没有就进行关闭 */ if ((0 == (0x01 & McuTaskImuAskStatus())) && (0 == (0x01 & McuTaskInParaAskStatus())) && (0 == (0x01 & McuTaskManyParaAskStatus())) && (0 == (0x01 & McuTaskPositionAskStatus()))) { McuDrvBeiDouHtyClosePower(); McuDrv4GCatDtuClosePower(); } /* 进入低功耗 */ if (0 == McuTaskFlashGetAsk() && 0 == McuTaskImuAskStatus() && 0 == McuTaskInParaAskStatus() && 0 == McuTaskManyParaAskStatus() && 0 == McuTaskPositionAskStatus() && 0 == TaskBlueToothGetBluetoothMode() && (0 == McuTaskSetSelfStructionTimerState())) { McuTaskLowPowerJoin(); } } return 0; } /* 初始化任务 */ static void AppInit(void) { /* 初始化定时器 */ McuBspTimerInit(); /* FLASH任务初始化 */ McuTaskFlashConfInit(); /* 姿态任务初始化 */ McuTaskImuInit(); /* 内部环境任务初始化 */ McuTaskInParaInit(); /* 多参数任务初始化 */ McuTaskManyParaInit(); /* 定位任务初始化 */ McuTaskPositionInit(); } /* APP的各任务 */ static void AppTask(void) { uint32_t j = 0; /******************************************* FLASH任务 ***********************************/ while (1) { j = 0; if (0 == McuTaskFlashGetAsk()) { break; } McuTaskFlash(NULL); /* 等待发送再次被置位 */ while (1) { HAL_Delay(15); j++; if (j >= 1000) { break; } McuTaskBlueTooth(); if (0 != McuTaskFlashGetSendFlag()) { break; } } if (j >= 1000) { McuTaskFlashClearAsk(); break; } } /****************************************** IMU任务 *************************************/ if (McuTaskImuAskStatus()) { McuTaskImuTask(); } McuTaskBlueTooth(); /************************************* 内部环境参量任务 **********************************/ if (McuTaskInParaAskStatus()) { McuTaskInParaTask(); } McuTaskBlueTooth(); /*************************************** 多参数任务 *************************************/ if (McuTaskManyParaAskStatus()) { McuTaskManyPara(); } McuTaskBlueTooth(); /**************************************** 位置任务 **************************************/ if (McuTaskPositionAskStatus()) { McuTaskPosition(); } McuTaskBlueTooth(); }