/*******************************************************************************
|
* File Name : Power.c
|
* Description :
|
* Created on : 2020Äê11ÔÂ10ÈÕ
|
* Author : www.hido-studio.com
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Include Files *
|
*******************************************************************************/
|
#include "Power.h"
|
#include "GPIO.h"
|
#include "Uart.h"
|
#include "HIDO_Debug.h"
|
#include "WS2812.h"
|
#include "GPS.h"
|
extern uint32_t uwbled,gpsled,loraled,powerled;
|
extern uint32_t lp_time;
|
extern uint32_t led_timer;
|
/*******************************************************************************
|
* Macro *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Type Definition *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Local Variable *
|
*******************************************************************************/
|
static ST_GPIO l_astPowerPin[POWER_PIN_MAX];
|
|
/*******************************************************************************
|
* Local Function Declaration *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Local Function *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Global Function *
|
*******************************************************************************/
|
|
/*******************************************************************************
|
* Function Name : Power_PinRegister
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : www.hido-studio.com
|
* Modified Date: : 2020Äê11ÔÂ10ÈÕ
|
*******************************************************************************/
|
HIDO_VOID Power_PinRegister(E_PowerPin _ePin, HIDO_VOID *_pGPIO, HIDO_UINT16 _u16Pin)
|
{
|
l_astPowerPin[_ePin].m_pstGPIOx = (GPIO_TypeDef *)_pGPIO;
|
l_astPowerPin[_ePin].m_u16GPIOPin = _u16Pin;
|
}
|
|
/*******************************************************************************
|
* Function Name : Power_On
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : www.hido-studio.com
|
* Modified Date: : 2020Äê11ÔÂ10ÈÕ
|
*******************************************************************************/
|
HIDO_VOID Power_On(HIDO_VOID)
|
{
|
GPIO_SET(&l_astPowerPin[POWER_PIN_EN]);
|
}
|
|
/*******************************************************************************
|
* Function Name : Power_Off
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : www.hido-studio.com
|
* Modified Date: : 2020Äê11ÔÂ10ÈÕ
|
*******************************************************************************/
|
HIDO_VOID Power_Off(HIDO_VOID)
|
{
|
GPIO_RESET(&l_astPowerPin[POWER_PIN_EN]);
|
}
|
|
/*******************************************************************************
|
* Function Name : Power_GPS_LED_Off
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : www.hido-studio.com
|
* Modified Date: : 2020Äê11ÔÂ10ÈÕ
|
*******************************************************************************/
|
HIDO_VOID Power_GPS_LoraOn(HIDO_VOID)
|
{
|
GPIO_SET(&l_astPowerPin[POWER_PIN_GPS_LORA]);
|
GPS_PowerOn();
|
}
|
|
/*******************************************************************************
|
* Function Name : Power_GPS_LED_Off
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : www.hido-studio.com
|
* Modified Date: : 2020Äê11ÔÂ10ÈÕ
|
*******************************************************************************/
|
extern HIDO_VOID GPS_PowerOff(void);
|
HIDO_VOID Power_GPS_LoraOff(HIDO_VOID)
|
{
|
GPIO_RESET(&l_astPowerPin[POWER_PIN_GPS_LORA]);
|
GPS_PowerOff();
|
}
|
|
/*******************************************************************************
|
* Function Name : Power_Sleep
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : hido.ltd
|
*******************************************************************************/
|
extern uint8_t nomove_flag;
|
extern void Set4LEDColor_Off(void);
|
extern void MX_Init(void);
|
extern void SystemClock_Config(void);
|
void Power_Sleep(void)
|
{
|
extern ADC_HandleTypeDef hadc;
|
extern UART_HandleTypeDef hlpuart1;
|
extern UART_HandleTypeDef huart1;
|
extern UART_HandleTypeDef huart2;
|
extern SPI_HandleTypeDef hspi1;
|
extern TIM_HandleTypeDef htim21;
|
|
HAL_ADC_DeInit(&hadc);
|
HAL_SPI_DeInit(&hspi1);
|
HAL_TIM_Base_DeInit(&htim21);
|
HAL_UART_DeInit(&hlpuart1);
|
HAL_UART_DeInit(&huart1);
|
HAL_UART_DeInit(&huart2);
|
|
if(nomove_flag==0)
|
Set4LEDColor_Off(); //¹Øled×ܵçÔ´
|
|
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
GPIO_InitStruct.Pin = GPIO_PIN_4;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
|
|
GPIO_InitStruct.Pin = GPIO_PIN_11;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
|
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
|
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);//ÀµÍgps¸´Î»½Å
|
while(1)
|
{
|
|
HAL_SuspendTick();
|
__HAL_RCC_PWR_CLK_ENABLE();
|
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
|
// RTC_SetWakeUp(5000);
|
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
|
|
HAL_ResumeTick();
|
|
SystemClock_Config();
|
MX_Init();
|
Uart_ReInit(UART_ID_DBG);
|
Uart_ReInit(UART_ID_LORA);
|
Uart_ReInit(UART_ID_GPS);
|
|
GPIO_InitStruct.Pin = GPIO_PIN_4;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);//Àg gps¸´Î»½Å
|
|
GPIO_InitStruct.Pin = GPIO_PIN_11;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);//Àg adc½Å
|
|
|
// LEDON_POLL();
|
if(lp_time%2==0&&lp_time!=led_timer)
|
{
|
if(bat_percent>=20)
|
{powerled=BLUE;}
|
else
|
{powerled=RED;}
|
uwbled=LEDOFF;
|
gpsled=LEDOFF;
|
loraled=LEDOFF;
|
Set4LEDColor(powerled,loraled,gpsled,uwbled);
|
led_timer=lp_time;
|
}
|
HIDO_Debug("waku up\r\n");
|
break;
|
}
|
}
|
|
/*******************************************************************************
|
* Function Name : Power_Init
|
* Description :
|
* Input :
|
* Output :
|
* Return :
|
* Author : www.hido-studio.com
|
* Modified Date: : 2020Äê11ÔÂ10ÈÕ
|
*******************************************************************************/
|
HIDO_INT32 Power_Init(void)
|
{
|
//Power_On();
|
|
return HIDO_OK;
|
}
|