mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-22 17:12:55 +08:00
175 lines
5.2 KiB
C
175 lines
5.2 KiB
C
/*
|
|
* Copyright 2022 MindMotion Microelectronics Co., Ltd.
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef __HAL_PWR_H__
|
|
#define __HAL_PWR_H__
|
|
|
|
#include "hal_common.h"
|
|
|
|
/*!
|
|
* @addtogroup PWR
|
|
* @{
|
|
*/
|
|
|
|
/*!
|
|
* @brief PWR driver version number.
|
|
*/
|
|
#define PWR_DRIVER_VERSION 0u /*!< PWR_0. */
|
|
|
|
/*!
|
|
* @addtogroup PWR_WAKEUP_PIN
|
|
* @{
|
|
*/
|
|
#define PWR_WAKEUP_PIN_0 (1u << 0u) /*!< Wake up pin 0 selected. */
|
|
#define PWR_WAKEUP_PIN_1 (1u << 1u) /*!< Wake up pin 1 selected. */
|
|
#define PWR_WAKEUP_PIN_2 (1u << 2u) /*!< Wake up pin 2 selected. */
|
|
#define PWR_WAKEUP_PIN_3 (1u << 3u) /*!< Wake up pin 3 selected. */
|
|
#define PWR_WAKEUP_PIN_4 (1u << 4u) /*!< Wake up pin 4 selected. */
|
|
#define PWR_WAKEUP_PIN_5 (1u << 5u) /*!< Wake up pin 5 selected. */
|
|
/*!
|
|
* @}
|
|
*/
|
|
|
|
/*!
|
|
* @addtogroup PWR_STATUS
|
|
* @{
|
|
*/
|
|
#define PWR_STATUS_LOWPOWERRUN (1u << 0u) /*!< Low power run mode flag. */
|
|
#define PWR_STATUS_STANDBYRESET (1u << 1u) /*!< Standby reset flag. */
|
|
/*!
|
|
* @}
|
|
*/
|
|
|
|
/*!
|
|
* @brief PWR standby wake up delay type.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWR_StandbyWakeUpDelay_2 = 1u, /*!< 2 LSI period selected. */
|
|
PWR_StandbyWakeUpDelay_3 = 2u, /*!< 3 LSI period selected. */
|
|
PWR_StandbyWakeUpDelay_4 = 3u, /*!< 4 LSI period selected. */
|
|
PWR_StandbyWakeUpDelay_5 = 4u, /*!< 5 LSI period selected. */
|
|
PWR_StandbyWakeUpDelay_6 = 5u, /*!< 6 LSI period selected. */
|
|
PWR_StandbyWakeUpDelay_7 = 6u, /*!< 7 LSI period selected. */
|
|
PWR_StandbyWakeUpDelay_8 = 7u, /*!< 8 LSI period selected. */
|
|
} PWR_StandbyWakeUpDelay_Type;
|
|
|
|
/*!
|
|
* @brief PWR standby mode wake up pin trigger input type.
|
|
*/
|
|
typedef enum
|
|
{
|
|
PWR_StandbyWakeUpPinTriggerIn_RisingEdge = 0u, /*!< Enable the wake up pin rising edge trigger. */
|
|
PWR_StandbyWakeUpPinTriggerIn_FallingEdge = 1u, /*!< Enable the wake up pin falling edge trigger. */
|
|
} PWR_StandbyWakeUpPinTriggerIn_Type;
|
|
|
|
/*!
|
|
* @brief This type of structure instance is used to keep setting when calling.
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint32_t Pins; /*!< Specify wake up pins. See to @ref PWR_WAKEUP_PIN. */
|
|
PWR_StandbyWakeUpPinTriggerIn_Type TrgIn; /*!< @ref Specify wake up pin trigger input type. See to @ref PWR_StandbyWakeUpPinTriggerIn_Type. */
|
|
} PWR_StandbyWakeUpPinConf_Type;
|
|
|
|
/*!
|
|
* @brief This type of structure instance is used to keep setting when calling.
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint32_t Pin; /*!< Specify one of the PWR_WAKEUP_PIN_0, PWR_WAKEUP_PIN_1, and PWR_WAKEUP_PIN_2 for filtering. */
|
|
PWR_StandbyWakeUpPinTriggerIn_Type TrgIn; /*!< @ref Specify wake up pin trigger input type. See to @ref PWR_StandbyWakeUpPinTriggerIn_Type. */
|
|
uint32_t CountValue; /*!< Specify filter count value. */
|
|
} PWR_StandbyWakeUpPinFilter0Conf_Type;
|
|
|
|
/*!
|
|
* @brief This type of structure instance is used to keep setting when calling.
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint32_t Pin; /*!< Specify one of PWR_WAKEUP_PIN_3, PWR_WAKEUP_PIN_4, and PWR_WAKEUP_PIN_5 for filtering. */
|
|
PWR_StandbyWakeUpPinTriggerIn_Type TrgIn; /*!< @ref Specify wake up pin trigger input type. See to @ref PWR_StandbyWakeUpPinTriggerIn_Type. */
|
|
uint32_t CountValue; /*!< Specify filter count value. */
|
|
} PWR_StandbyWakeUpPinFilter1Conf_Type;
|
|
|
|
/*!
|
|
* @brief Enable low power run mode.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param enable 'true' to enable the mode, 'false' to disable the mode.
|
|
* @return None.
|
|
*/
|
|
void PWR_EnableLowPowerRunMode(PWR_Type * PWRx, bool enable);
|
|
|
|
/*!
|
|
* @brief Enter stop mode.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param deep_stop 'true' to enable the deep stop mode, 'false' to disable the deep stop mode.
|
|
* @return None.
|
|
*/
|
|
void PWR_EnterStopMode(PWR_Type * PWRx, bool deep_stop);
|
|
|
|
/*!
|
|
* @brief Enable standby mode wake up pin.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param init Pointer to the initialization structure. See to @ref PWR_StandbyWakeUpPinConf_Type.
|
|
* @return None.
|
|
*/
|
|
void PWR_EnableStandbyWakeUpPin(PWR_Type * PWRx, PWR_StandbyWakeUpPinConf_Type * conf);
|
|
|
|
/*!
|
|
* @brief Enable standby mode wake up pin filter 0.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param init Pointer to the initialization structure. See to @ref PWR_StandbyWakeUpPinFilter0Conf_Type.
|
|
* @return None.
|
|
*/
|
|
void PWR_EnableStandbyWakeUpPinFilter0(PWR_Type * PWRx, PWR_StandbyWakeUpPinFilter0Conf_Type * conf);
|
|
|
|
/*!
|
|
* @brief Enable standby mode wake up pin filter 1.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param init Pointer to the initialization structure. See to @ref PWR_StandbyWakeUpPinFilter1Conf_Type.
|
|
* @return None.
|
|
*/
|
|
void PWR_EnableStandbyWakeUpPinFilter1(PWR_Type * PWRx, PWR_StandbyWakeUpPinFilter1Conf_Type * conf);
|
|
|
|
/*!
|
|
* @brief Enter standby mode.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param Delay Specify standby mode wake up delay value. See to @ref PWR_StandbyWakeUpDelay_Type.
|
|
* @return None.
|
|
*/
|
|
void PWR_EnterStandbyMode(PWR_Type * PWRx, PWR_StandbyWakeUpDelay_Type delay);
|
|
|
|
/*!
|
|
* @brief Get the current status flags of PWR module.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @return PWR status flags. See to @ref PWR_STATUS.
|
|
*/
|
|
uint32_t PWR_GetStatus(PWR_Type * PWRx);
|
|
|
|
/*!
|
|
* @brief Clear PWR status flags.
|
|
*
|
|
* @param PWRx PWR instance.
|
|
* @param flags PWR status flags. See to @ref PWR_STATUS.
|
|
* @return None.
|
|
*/
|
|
void PWR_ClearStatus(PWR_Type * PWRx, uint32_t flags);
|
|
|
|
/*!
|
|
*@}
|
|
*/
|
|
|
|
#endif /* __HAL_PWR_H__ */
|