20230731_XiaoFuZi_emb/ZheDaXiaoFuZi/Src/Usr/App/XfzApp.c
Rjh913828050 3f425bfbd8 类型:修改
内容:将版本更新到最新
2023-10-09 09:01:31 +08:00

249 lines
7.4 KiB
C

#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 <string.h>
#include <stdio.h>
/* 初始化任务 */
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();
}