287 lines
18 KiB
C
287 lines
18 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"
|
|||
|
|
|
|||
|
|
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)
|
|||
|
|
{
|
|||
|
|
/* 进入低功耗之前的处理*/
|
|||
|
|
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();
|
|||
|
|
McuBspUart1WakeUp();
|
|||
|
|
McuBspUart2WakeUp();
|
|||
|
|
McuBspUart3WakeUp();
|
|||
|
|
McuBspUart4WakeUp();
|
|||
|
|
McuBspTimerWakeUp();
|
|||
|
|
McuBspSpiWakeUp();
|
|||
|
|
McuBspI2cWakeUp();
|
|||
|
|
McuBspAdcWakeUp();
|
|||
|
|
McuTaskFlashJoinUperPow();
|
|||
|
|
if ((McuTaskImuAskStatus() & 0x01) || (McuTaskInParaAskStatus() & 0x01) ||
|
|||
|
|
(McuTaskManyParaAskStatus() & 0x01) || (McuTaskPositionAskStatus() & 0x01)) {
|
|||
|
|
if (0 == McuDrvBeiDouHtyPowerSta()) {
|
|||
|
|
McuDrvBeiDouHtyOpenPower();
|
|||
|
|
}
|
|||
|
|
HAL_Delay(60000);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 进入休眠 */
|
|||
|
|
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();
|
|||
|
|
McuBspSpiWakeUp();
|
|||
|
|
McuTaskBlueToothWakeUp();
|
|||
|
|
McuTaskFlashJoinUperPow();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
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);
|
|||
|
|
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作为外部开关
|
|||
|
|
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
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
static void McuTaskLowPowerWakeUpCallback(void)
|
|||
|
|
{
|
|||
|
|
if (gMcuTaskLowerPowerMode == 1) {
|
|||
|
|
/* 初始化系统时钟,由于唤醒时候时钟会切换为HSI */
|
|||
|
|
McuBspSysClockInit();
|
|||
|
|
gMcuTaskLowerPowerMode = 0;
|
|||
|
|
}
|
|||
|
|
McuTaskImuBeiDouAsk();
|
|||
|
|
McuTaskInParaBeiDouAsk();
|
|||
|
|
McuTaskManyParaBeiDouAsk();
|
|||
|
|
McuTaskPositionBeiDouAsk();
|
|||
|
|
McuTaskLowPowerStartRTCAlarm();
|
|||
|
|
}
|