366 lines
20 KiB
C
366 lines
20 KiB
C
#include "McuTaskLowPower.h"
|
||
#include "McuTaskImu.h"
|
||
#include "McuTaskInpara.h"
|
||
#include "McuTaskManyPara.h"
|
||
#include "McuTaskPosition.h"
|
||
#include "McuTaskBlueTooth.h"
|
||
|
||
#include "McuTaskFlash.h"
|
||
#include "McuBspGpio.h"
|
||
#include "McuBspRtc.h"
|
||
#include "McuBspAdc.h"
|
||
#include "McuBspGpio.h"
|
||
#include "McuBspI2c.h"
|
||
#include "McuBspSpi.h"
|
||
#include "McuBspTimer.h"
|
||
#include "McuBspUart.h"
|
||
#include "McuBspSys.h"
|
||
|
||
#include "BeiDouHtyDrv.h"
|
||
#include "Usr_4GCatDtuDrv.h"
|
||
|
||
static uint8_t gMcuTaskLowerPowerPeriod = 1;
|
||
static uint8_t gMcuTaskPeriod = 1;
|
||
static uint32_t gMcuTaskCount = 0;
|
||
static uint8_t gMcuTaskLowerPowerMode = 0;
|
||
static uint8_t gMcuTaskLowerPowerBlth = 0;
|
||
static uint8_t gMcuTaskRestartBlue = 0;
|
||
|
||
static void McuTaskLowPowerWakeUpCallback(void);
|
||
static void McuTaskLowPowerEndRtcAlarm(void);
|
||
static void McuTaskLowPowerStartRTCAlarm(void);
|
||
|
||
void McuTaskLowPowerSetPeriod(uint8_t Period)
|
||
{
|
||
if (Period != 0) {
|
||
if ((24 % Period) != 0) {
|
||
McuTaskLowPowerStartRTCAlarm();
|
||
return;
|
||
}
|
||
} else {
|
||
return;
|
||
}
|
||
gMcuTaskPeriod = Period;
|
||
McuTaskLowPowerStartRTCAlarm();
|
||
}
|
||
|
||
/* 低功耗进入 */
|
||
void McuTaskLowPowerJoin(void)
|
||
{
|
||
uint8_t mode = 0;
|
||
mode = TaskBlueToothGetAppMode();
|
||
if (mode == 0) {
|
||
McuTaskLowPowerEndRtcAlarm();
|
||
} else {
|
||
McuTaskLowPowerStartRTCAlarm();
|
||
}
|
||
/* 进入低功耗之前的处理*/
|
||
// McuTaskFlashJoinLowerPow();
|
||
McuBspTimerSleep(); // 定时器低功耗
|
||
McuBspAdcSleep(); // ADC低功耗
|
||
McuBspI2cSleep(); // I2C低功耗
|
||
McuBspSpiSleep(); // SPI低功耗
|
||
HAL_Delay(5000);
|
||
McuBspUartSleep(); // 串口低功耗
|
||
McuTaskBlueToothSleep(); // 蓝牙低功耗
|
||
McuBspGpioSleep(); // GPIO低功耗
|
||
HAL_SuspendTick();
|
||
gMcuTaskLowerPowerMode = 1;
|
||
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
|
||
HAL_ResumeTick();
|
||
McuBspGpioWakeUp();
|
||
McuTaskBlueToothWakeUp();
|
||
if (gMcuTaskRestartBlue == 1) {
|
||
TaskBlueToothRestart();
|
||
gMcuTaskRestartBlue = 0;
|
||
}
|
||
McuBspUart1WakeUp();
|
||
McuBspUart2WakeUp();
|
||
McuBspUart3WakeUp();
|
||
McuBspUart4WakeUp();
|
||
McuBspTimerWakeUp();
|
||
McuBspSpiWakeUp();
|
||
McuBspI2cWakeUp();
|
||
McuBspAdcWakeUp();
|
||
// McuTaskFlashJoinUperPow();
|
||
if ((McuTaskImuAskStatus() & 0x01) || (McuTaskInParaAskStatus() & 0x01) ||
|
||
(McuTaskManyParaAskStatus() & 0x01) || (McuTaskPositionAskStatus() & 0x01)) {
|
||
int qos = -1;
|
||
int j = 0;
|
||
/* 关闭北斗 */
|
||
McuDrvBeiDouHtyClosePower();
|
||
/* 打开4G通信 */
|
||
if (0 == McuDrv4GCatDtuPowerSta()) {
|
||
McuDrv4GCatDtuOpenPower();
|
||
}
|
||
|
||
for (j = 0; j < 6; j++) {
|
||
HAL_Delay(10000);
|
||
if (0 != TaskBlueToothGetBluetoothMode()) {
|
||
TaskBlueToothNewTimer();
|
||
}
|
||
}
|
||
/* 判断4G信号质量 */
|
||
qos = McuDrv4GCatDtuSta();
|
||
if (qos > 0 && qos < 99) {
|
||
/* 4G通信 */
|
||
} else {
|
||
/* 断开4G通信 */
|
||
// McuDrv4GCatDtuClosePower();
|
||
// /* 打开北斗通信 */
|
||
// if (0 == McuDrvBeiDouHtyPowerSta()) {
|
||
// McuDrvBeiDouHtyOpenPower();
|
||
// }
|
||
// for (j = 0; j < 6; j++) {
|
||
// HAL_Delay(10000);
|
||
// if (0 != TaskBlueToothGetBluetoothMode()) {
|
||
// TaskBlueToothNewTimer();
|
||
// }
|
||
// }
|
||
}
|
||
}
|
||
}
|
||
|
||
/* 进入休眠 */
|
||
void McuTaskSleep(void)
|
||
{
|
||
// McuTaskFlashJoinLowerPow();
|
||
McuTaskLowPowerEndRtcAlarm();
|
||
McuTaskLowPowerInit();
|
||
McuBspTimerSleep(); // 定时器低功耗
|
||
McuBspAdcSleep(); // ADC低功耗
|
||
McuBspI2cSleep(); // I2C低功耗
|
||
McuBspSpiSleep(); // SPI低功耗
|
||
HAL_Delay(5000);
|
||
McuBspUartSleep(); // 串口低功耗
|
||
McuTaskBlueToothSleep(); // 蓝牙低功耗
|
||
McuBspGpioSleep(); // GPIO低功耗
|
||
HAL_SuspendTick();
|
||
gMcuTaskLowerPowerMode = 1;
|
||
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
|
||
HAL_ResumeTick();
|
||
McuBspGpioWakeUp();
|
||
McuBspSpiWakeUp();
|
||
McuTaskBlueToothWakeUp();
|
||
//McuTaskLowPowerStartRTCAlarm();
|
||
//McuTaskFlashJoinUperPow();
|
||
}
|
||
|
||
void McuTaskLowPowerSetGpioCallback(void)
|
||
{
|
||
/* 初始化系统时钟,由于唤醒时候时钟会切换为HSI */
|
||
if (gMcuTaskLowerPowerMode == 1) {
|
||
McuBspSysClockInit();
|
||
gMcuTaskLowerPowerMode = 0;
|
||
}
|
||
/* 初始化蓝牙串口 */
|
||
McuBspUart5WakeUp();
|
||
//McuTaskBlueToothWakeUp();
|
||
McuTaskLowPowerSetLowerPowerBlth(1);
|
||
TaskBlueToothNewTimer();
|
||
}
|
||
|
||
void McuTaskLowPowerSetLowerPowerBlth(uint8_t Flag)
|
||
{
|
||
if (Flag == 0) {
|
||
gMcuTaskLowerPowerBlth = 0;
|
||
} else {
|
||
gMcuTaskLowerPowerBlth = 1;
|
||
}
|
||
}
|
||
|
||
uint8_t McuTaskLowPowerGetLowerPowerBlth(void)
|
||
{
|
||
return gMcuTaskLowerPowerBlth;
|
||
}
|
||
|
||
static void McuTaskLowPowerStartRTCAlarm(void)
|
||
{
|
||
McuBspRtcStartAlarm(gMcuTaskLowerPowerPeriod, McuTaskLowPowerWakeUpCallback);
|
||
}
|
||
|
||
static void McuTaskLowPowerEndRtcAlarm(void)
|
||
{
|
||
McuBspRtcEndAlarm();
|
||
}
|
||
|
||
void McuTaskLowPowerInit(void)
|
||
{
|
||
/* GPIO初始化未使用的引脚 */
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_2, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE2没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_4, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE4没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_5, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE5没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_6, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE6没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_13, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC13没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF0没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_1, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF1没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_2, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF2没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_3, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF3没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_4, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF4没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_5, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF5没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_6, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF6没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_7, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF7没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_8, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF8没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_9, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF9没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_10, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF10没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_1, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC1没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_2, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC2没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_3, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC3没有被使用
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA0没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_4, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC4没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_5, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC5没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_11, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF11没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_13, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF13没有被使用
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_14, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PF14没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG0没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_7, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE7没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_9, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE9作为外部开关
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_14, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE14没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_15, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE15没有被使用
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_14, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB14没有被使用
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_15, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB15没有被使用
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_10, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PD10没有被使用
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_11, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PD11没有被使用
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_12, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PD12没有被使用
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_13, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PD13没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_6, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG6
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_8, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG8
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_6, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC6没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_7, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC7没有被使用
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_8, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC8没有被使用
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_8, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA8没有被使用
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_11, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA11没有被使用
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_12, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA12没有被使用
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PD0没有被使用
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_1, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PD1没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_9, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG9没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_10, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG10没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_11, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG11没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_12, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG12没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_13, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG13没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_14, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG14没有被使用
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_15, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PG15没有被使用
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_6, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB6没有被使用
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_7, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB7没有被使用
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_8, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB8没有被使用
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_9, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB9没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE0没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_1, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PE1没有被使用
|
||
/* PE3用作LED灯,默认关闭 */
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL);
|
||
McuBspGpioSetLevel(GPIOE, GPIO_PIN_3, MCU_BSP_GPIO_OUT_LOW);
|
||
/* ADC */
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PC0,ADC2
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_1, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA1,ADC_RE
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_4, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA4,ADC_DC
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_5, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA5,ADC_PH
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_6, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA6,ADC_TEM
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_7, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PA7,ADC_EC
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_0, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB0,ADC_DO
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_1, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB1,ADC1
|
||
/* 串口 */
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_2, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PA2,UART1_TX
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_3, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PA3,UART2_RX
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_8, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD8--GPS_TX
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_9, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD9--GPS_RX
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_9, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PA9--UART_TX
|
||
McuBspGpioInit(GPIOA, GPIO_PIN_10, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PA10--UART_RX
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_10, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PC10--UART_TX
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_11, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PC11--UART_RX
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_12, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PC12--UART_TX
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_2, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD2 -- UART_RX
|
||
/* 外部控制口 */
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PF12作为外部开关
|
||
McuBspGpioSetLevel(GPIOF, GPIO_PIN_12, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOF, GPIO_PIN_15, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PF15作为外部开关
|
||
McuBspGpioSetLevel(GPIOF, GPIO_PIN_15, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_1, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG1作为外部开关
|
||
McuBspGpioSetLevel(GPIOG, GPIO_PIN_1, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_8, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE8作为外部开关
|
||
McuBspGpioSetLevel(GPIOE, GPIO_PIN_8, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
// McuBspGpioInit(GPIOE, GPIO_PIN_9, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE9作为外部开关,4G
|
||
// McuBspGpioSetLevel(GPIOE, GPIO_PIN_9, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PB12作为外部开关
|
||
McuBspGpioSetLevel(GPIOB, GPIO_PIN_12, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_13, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PB13作为外部开关
|
||
McuBspGpioSetLevel(GPIOB, GPIO_PIN_13, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_14, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD14 OUTPUT_SD
|
||
McuBspGpioSetLevel(GPIOD, GPIO_PIN_14, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOD, GPIO_PIN_15, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD15 OUTPUT1 备用
|
||
McuBspGpioSetLevel(GPIOD, GPIO_PIN_15, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_2, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG2 OUTPUT2 备用
|
||
McuBspGpioSetLevel(GPIOG, GPIO_PIN_2, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG3 OUTPUT3 备用
|
||
McuBspGpioSetLevel(GPIOG, GPIO_PIN_3, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_4, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG4 OUTPUT4 备用
|
||
McuBspGpioSetLevel(GPIOG, GPIO_PIN_4, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_5, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG5 OUTPUT5 备用
|
||
McuBspGpioSetLevel(GPIOG, GPIO_PIN_5, MCU_BSP_GPIO_OUT_LOW);
|
||
|
||
// McuBspGpioInit(GPIOD, GPIO_PIN_7, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD7 OUTPUT7 蓝牙不需要关闭
|
||
// McuBspGpioSetLevel(GPIOD, GPIO_PIN_7, MCU_BSP_GPIO_OUT_LOW);
|
||
/* 输入检测 */
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_10, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE10没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_11, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE11没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE12没有被使用
|
||
McuBspGpioInit(GPIOE, GPIO_PIN_13, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE13没有被使用
|
||
/* IIC */
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_10, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLUP, 0, NULL); // PB10 IIC_SCL
|
||
McuBspGpioInit(GPIOB, GPIO_PIN_11, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLUP, 0, NULL); // PB11 IIC_SDA
|
||
McuBspGpioSetLevel(GPIOB, GPIO_PIN_10, MCU_BSP_GPIO_OUT_HIGH);
|
||
McuBspGpioSetLevel(GPIOB, GPIO_PIN_11, MCU_BSP_GPIO_OUT_HIGH);
|
||
/* SPI */
|
||
// McuBspGpioInit(GPIOA, GPIO_PIN_15, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLUP, 0, NULL); // PA15 NSS
|
||
// McuBspGpioSetLevel(GPIOA, GPIO_PIN_15, MCU_BSP_GPIO_OUT_HIGH);
|
||
// McuBspGpioInit(GPIOB, GPIO_PIN_3, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB3 SPI_MOSI
|
||
// McuBspGpioInit(GPIOB, GPIO_PIN_4, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB4 SPI_MISO
|
||
// McuBspGpioInit(GPIOB, GPIO_PIN_5, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 0, NULL); // PB5 SPI_SCK
|
||
/* 特殊输出口 */
|
||
McuBspGpioInit(GPIOG, GPIO_PIN_7, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG7 GPS_FORCE
|
||
McuBspGpioInit(GPIOC, GPIO_PIN_9, GPIO_MODE_OUTPUT_OD, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PC9 485_CRL1
|
||
// McuBspGpioInit(GPIOD, GPIO_PIN_3, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD3 DATA
|
||
// McuBspGpioInit(GPIOD, GPIO_PIN_4, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD4 LINK
|
||
// McuBspGpioInit(GPIOD, GPIO_PIN_5, GPIO_MODE_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD5 WKP
|
||
// McuBspGpioInit(GPIOD, GPIO_PIN_6, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLUP, 0, NULL); // PD6 E_RST
|
||
}
|
||
|
||
void McuTaskLowPowerUpclk(void)
|
||
{
|
||
if (gMcuTaskLowerPowerMode == 1) {
|
||
/* 初始化系统时钟,由于唤醒时候时钟会切换为HSI */
|
||
McuBspSysClockInit();
|
||
gMcuTaskLowerPowerMode = 0;
|
||
}
|
||
}
|
||
|
||
static void McuTaskLowPowerWakeUpCallback(void)
|
||
{
|
||
if (gMcuTaskLowerPowerMode == 1) {
|
||
/* 初始化系统时钟,由于唤醒时候时钟会切换为HSI */
|
||
McuBspSysClockInit();
|
||
gMcuTaskLowerPowerMode = 0;
|
||
}
|
||
gMcuTaskCount++;
|
||
if (gMcuTaskCount % gMcuTaskPeriod == 0) {
|
||
McuTaskImuBeiDouAsk();
|
||
McuTaskInParaBeiDouAsk();
|
||
McuTaskManyParaBeiDouAsk();
|
||
McuTaskPositionBeiDouAsk();
|
||
gMcuTaskCount = 0;
|
||
}
|
||
gMcuTaskRestartBlue = 1;
|
||
McuTaskLowPowerStartRTCAlarm();
|
||
}
|