#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(); }