#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 #include /* 初始化任务 */ static void AppInit(void); /* APP的各任务 */ static void AppTask(void); /* APP测试程序 */ static void AppTest(void); int main(void) { uint8_t mode = 0; /* 初始化系统 */ McuBspSysInit(); McuTaskLowPowerInit(); /* 初始化RTC */ McuBspRtcInit(); McuTaskFlashInit(); /* 北斗初始化 */ McuDrvBeiDouHtyInit(); /* 写入数据 */ McuTaskFlashWriteOpt("App Join Success\r\n", strlen("App Join Success\r\n")); /* 蓝牙任务初始化 */ McuTaskBlueToothInit(); /* 测试引入的开启北斗 */ // if (0 == McuDrvBeiDouHtyPowerSta()) { // int j = 0; // McuDrvBeiDouHtyOpenPower(); // while (1) { // HAL_Delay(10); // j++; // if (j >= 6000) { // break; // } // } // } do { mode = TaskBlueToothGetAppMode(); if (mode == 0) { int j = 0; /* 通知上位机,蓝牙进入低功耗模式 */ if (0 == TaskBlueToothGetBluetoothMode()) { TaskBlueToothJoinLowPowerNoticePlat(); } /* 将北斗模块断电处理 */ if (0 != McuDrvBeiDouHtyPowerSta()) { McuDrvBeiDouHtyClosePower(); } /* 进入休眠 */ McuTaskSleep(); /* 从完全低功耗唤醒之后的动作 */ while (1) { HAL_Delay(10); j++; if (j >= 6000) { break; } McuTaskBlueTooth(); } } else if (mode == 1) { TaskBlueToothNewTimer(); AppInit(); // McuTaskImuBeiDouAsk(); // McuTaskInParaBeiDouAsk(); // McuTaskManyParaBeiDouAsk(); // McuTaskPositionBeiDouAsk(); // /* 打开北斗通信 */ // if (0 == McuDrvBeiDouHtyPowerSta()) { // McuDrvBeiDouHtyOpenPower(); // } // HAL_Delay(60000); while (1) { AppTask(); mode = TaskBlueToothGetAppMode(); if (mode != 1) { TaskBlueToothDelTimer(); break; } /* 通知上位机,蓝牙进入低功耗模式 */ if (0 == TaskBlueToothGetBluetoothMode()) { TaskBlueToothJoinLowPowerNoticePlat(); } /* 判断是否有北斗任务在执行,没有就进行关闭 */ if ((0 == (0x01 & McuTaskImuAskStatus())) && (0 == (0x01 & McuTaskInParaAskStatus())) && (0 == (0x01 & McuTaskManyParaAskStatus())) && (0 == (0x01 & McuTaskPositionAskStatus()))) { McuDrvBeiDouHtyClosePower(); } /* 进入低功耗 */ if (0 == McuTaskFlashGetAsk() && 0 == McuTaskImuAskStatus() && 0 == McuTaskInParaAskStatus() && 0 == McuTaskManyParaAskStatus() && 0 == McuTaskPositionAskStatus() && 0 == TaskBlueToothGetBluetoothMode()) { McuTaskLowPowerJoin(); } } } else if (mode == 2) { TaskBlueToothNewTimer(); while (1) { AppTest(); mode = TaskBlueToothGetAppMode(); if (mode != 2) { TaskBlueToothDelTimer(); break; } /* 通知上位机蓝牙进入低功耗模式 */ if (0 == TaskBlueToothGetBluetoothMode()) { TaskBlueToothJoinLowPowerNoticePlat(); } } } // AppTest(); } while (1); 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(); } static void AppTest(void) { uint32_t j = 0; AppInit(); // McuTaskImuBeiDouAsk(); // McuTaskInParaBeiDouAsk(); McuTaskManyParaBeiDouAsk(); // McuTaskPositionBeiDouAsk(); /******************************************* 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(); }