2023-10-08 08:10:23 +00:00
|
|
|
#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();
|
2023-10-09 01:01:31 +00:00
|
|
|
McuTaskLowPowerInit();
|
2023-10-08 08:10:23 +00:00
|
|
|
/* 初始化RTC */
|
|
|
|
|
McuBspRtcInit();
|
|
|
|
|
McuTaskFlashInit();
|
|
|
|
|
/* 北斗初始化 */
|
|
|
|
|
McuDrvBeiDouHtyInit();
|
|
|
|
|
/* 写入数据 */
|
|
|
|
|
McuTaskFlashWriteOpt("App Join Success\r\n", strlen("App Join Success\r\n"));
|
|
|
|
|
/* 蓝牙任务初始化 */
|
|
|
|
|
McuTaskBlueToothInit();
|
|
|
|
|
/* 测试引入的开启北斗 */
|
2023-10-09 01:01:31 +00:00
|
|
|
// if (0 == McuDrvBeiDouHtyPowerSta()) {
|
|
|
|
|
// int j = 0;
|
|
|
|
|
// McuDrvBeiDouHtyOpenPower();
|
|
|
|
|
// while (1) {
|
|
|
|
|
// HAL_Delay(10);
|
|
|
|
|
// j++;
|
|
|
|
|
// if (j >= 6000) {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
2023-10-08 08:10:23 +00:00
|
|
|
|
|
|
|
|
do {
|
2023-10-09 01:01:31 +00:00
|
|
|
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();
|
2023-10-08 08:10:23 +00:00
|
|
|
// }
|
2023-10-09 01:01:31 +00:00
|
|
|
// 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();
|
2023-10-08 08:10:23 +00:00
|
|
|
} 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();
|
2023-10-09 01:01:31 +00:00
|
|
|
// McuTaskImuBeiDouAsk();
|
|
|
|
|
// McuTaskInParaBeiDouAsk();
|
2023-10-08 08:10:23 +00:00
|
|
|
McuTaskManyParaBeiDouAsk();
|
2023-10-09 01:01:31 +00:00
|
|
|
// McuTaskPositionBeiDouAsk();
|
2023-10-08 08:10:23 +00:00
|
|
|
/******************************************* 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();
|
|
|
|
|
}
|