20230731_XiaoFuZi_emb/ZheDaXiaoFuZiBoot/Src/Usr/Task/McuTaskLowPower.c
Rjh913828050 a8560d741e 类型:重构
内容:重新整理项目文件分类
人员:任家豪
2023-10-08 16:10:23 +08:00

245 lines
16 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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"
static uint8_t gMcuTaskLowerPowerPeriod = 12;
static uint8_t gMcuTaskLowerPowerMode = 0;
static void McuTaskLowPowerWakeUpCallback(void);
static void McuTaskLowPowerInit(void);
static void McuTaskLowPowerEndRtcAlarm(void);
static void McuTaskLowPowerStartRTCAlarm(void);
void McuTaskLowPowerSetPeriod(uint8_t Period)
{
if (Period != 0) {
if ((24 % Period) != 0) {
return;
}
}
gMcuTaskLowerPowerPeriod = Period;
McuTaskLowPowerStartRTCAlarm();
}
/* 低功耗进入 */
void McuTaskLowPowerJoin(void)
{
/* 进入低功耗之前的处理*/
McuBspTimerSleep(); // 定时器低功耗
McuBspAdcSleep(); // ADC低功耗
McuBspI2cSleep(); // I2C低功耗
McuBspSpiSleep(); // SPI低功耗
McuBspUartSleep(); // 串口低功耗
McuTaskBlueToothSleep(); // 蓝牙低功耗
McuBspGpioSleep(); // GPIO低功耗
HAL_SuspendTick();
gMcuTaskLowerPowerMode = 1;
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
HAL_ResumeTick();
McuBspGpioWakeUp();
McuTaskBlueToothWakeUp();
McuBspUart1WakeUp();
McuBspUart2WakeUp();
McuBspUart3WakeUp();
McuBspUart4WakeUp();
McuBspTimerWakeUp();
McuBspSpiWakeUp();
McuBspI2cWakeUp();
McuBspAdcWakeUp();
}
/* 进入休眠 */
void McuTaskSleep(void)
{
McuTaskLowPowerEndRtcAlarm();
McuTaskLowPowerInit();
McuBspTimerSleep(); // 定时器低功耗
McuBspAdcSleep(); // ADC低功耗
McuBspI2cSleep(); // I2C低功耗
McuBspSpiSleep(); // SPI低功耗
McuBspUartSleep(); // 串口低功耗
McuTaskBlueToothSleep(); // 蓝牙低功耗
McuBspGpioSleep(); // GPIO低功耗
HAL_Delay(5000);
HAL_SuspendTick();
gMcuTaskLowerPowerMode = 1;
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
HAL_ResumeTick();
McuTaskBlueToothWakeUp();
}
void McuTaskLowPowerSetGpioCallback(void)
{
/* 初始化系统时钟由于唤醒时候时钟会切换为HSI */
if (gMcuTaskLowerPowerMode == 1) {
McuBspSysClockInit();
/* 初始化蓝牙串口 */
McuBspUart5WakeUp();
gMcuTaskLowerPowerMode = 0;
}
TaskBlueToothNewTimer();
}
static void McuTaskLowPowerStartRTCAlarm(void)
{
McuBspRtcStartAlarm(gMcuTaskLowerPowerPeriod, McuTaskLowPowerWakeUpCallback);
}
static void McuTaskLowPowerEndRtcAlarm(void)
{
McuBspRtcEndAlarm();
}
static 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);
/* 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,ADC_DO
/* 串口 */
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作为外部开关
McuBspGpioInit(GPIOF, GPIO_PIN_15, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PF15作为外部开关
McuBspGpioInit(GPIOG, GPIO_PIN_1, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG1作为外部开关
McuBspGpioInit(GPIOE, GPIO_PIN_8, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE8作为外部开关
McuBspGpioInit(GPIOE, GPIO_PIN_9, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PE9作为外部开关
McuBspGpioInit(GPIOB, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PB12作为外部开关
McuBspGpioInit(GPIOB, GPIO_PIN_13, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PB13作为外部开关
McuBspGpioInit(GPIOD, GPIO_PIN_14, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD14 OUTPUT_SD
McuBspGpioInit(GPIOD, GPIO_PIN_15, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PD15 OUTPUT1 备用
McuBspGpioInit(GPIOG, GPIO_PIN_2, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG2 OUTPUT2 备用
McuBspGpioInit(GPIOG, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG3 OUTPUT3 备用
McuBspGpioInit(GPIOG, GPIO_PIN_4, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG4 OUTPUT4 备用
McuBspGpioInit(GPIOG, GPIO_PIN_5, GPIO_MODE_OUTPUT_PP, GPIO_SPEED_FREQ_LOW, GPIO_PULLDOWN, 0, NULL); // PG5 OUTPUT5 备用
// 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_ANALOG, GPIO_SPEED_FREQ_LOW, GPIO_NOPULL, 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
}
static void McuTaskLowPowerWakeUpCallback(void)
{
if (gMcuTaskLowerPowerMode == 1) {
/* 初始化系统时钟由于唤醒时候时钟会切换为HSI */
McuBspSysClockInit();
gMcuTaskLowerPowerMode = 0;
}
McuTaskImuBeiDouAsk();
McuTaskInParaBeiDouAsk();
McuTaskManyParaBeiDouAsk();
McuTaskPositionBeiDouAsk();
McuTaskLowPowerStartRTCAlarm();
}