20230731_XiaoFuZi_emb/ZheDaXiaoFuZi/Src/Usr/App/XfzApp.c
Rjh913828050 b0e4bfe45a 类型:更新
内容:浙大小浮子项目下位机软件第一版完整程序
人员:任家豪
2024-07-31 08:52:45 +08:00

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