/******************************************************************************* * 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); 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½Å //if(g_com_map[ACTIVE_INDEX]!=0) //{ if(nomove_flag==0) { if(lp_time%2==0&&lp_time!=led_timer)//µçÔ´µÆ2sÉÁ˸һ´Î£¬µçÁ¿´óÓÚ20ÉÁÀ¶µÆ·´Ö®ÉÁºìµÆ¡£ { if(bat_percent>=20) {powerled=BLUE;} else {powerled=RED;} 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; }