久久精品国产精品国产一区,少妇扒开毛毛自慰喷水,国产精品无码电影在线观看 ,久久天天躁夜夜躁狠狠85麻豆

思澈科技軟件開發(fā)工具包  2.20
PMU

HAL PMU提供抽象的軟件接口操作硬件PMU(Power Management Unit)模塊,提供的功能有:

  • 設(shè)置芯片的供電參數(shù)
  • 設(shè)置低功耗時鐘參數(shù),
  • 配置芯片進入關(guān)機模式并設(shè)置喚醒源, 在關(guān)機模式下芯片可被PIN和RTC喚醒, 喚醒PIN與GPIO管腳的映射關(guān)系與LPSYS睡眠模式的喚醒PIN相同,參見AON
  • SF32LB52X支持充電,相關(guān)接口為 HAL_PMU_ChgInit

詳細(xì)的API說明參考 PMU.

Note
  • HAL_PMU_CheckBootMode 需要在每次啟動時執(zhí)行以獲取開機模式并清除相應(yīng)狀態(tài),如果關(guān)機狀態(tài)醒來不清PMU的狀態(tài), 就無法調(diào)用 HAL_PMU_EnterHibernate 再次關(guān)機
  • 執(zhí)行 HAL_PMU_EnterHibernate 后芯片并不會馬上關(guān)機, 最長會延遲一個LP Clock周期才會關(guān)機, 這期間CPU還能繼續(xù)執(zhí)行指令和響應(yīng)中斷, 為避免中斷觸發(fā)后誤執(zhí)行一些操作, 建議在調(diào)用 HAL_PMU_EnterHibernate 前關(guān)閉中斷, HAL_PMU_EnterHibernate 本身會是一個死循環(huán), 永遠(yuǎn)不會退出

使用HAL PMU

使能RTC和PIN喚醒后關(guān)機

void shutdown(void)
{
/* Enable PIN0 low level wakeup */
/* Enble RTC wakeup */
/* Disable Interrupt */
/* Shutdown, can be wakeup by PIN0 and RTC */
}
/* Use HAL_PMU_CheckBootMode in initializtion stage to check whether it's cold boot or wakeup from shutdown mode */
void init(void)
{
uint32_t wakeup_src;
/* check boot mode and clear PMU shutdown state if wakeup from shutdown mode
*/
HAL_PMU_CheckBootMode(&boot_mode, &wakeup_src);
}

配置充電

static PMU_ChgHandleTypeDef pmu_chg_handle;
static void pmu_chg_callback(PMU_ChgHandleTypeDef *handle, uint32_t status)
{
if (status & (1 << PMU_CHG_IRQ_VBUS_RDY))
{
printf("vbus: %d", HAL_PMU_ChgReadStatus(handle, PMU_CHG_IRQ_VBUS_RDY));
}
if (status & (1 << PMU_CHG_IRQ_EOC))
{
printf("eoc: %d", HAL_PMU_ChgReadStatus(handle, PMU_CHG_IRQ_EOC));
}
if (status & (1 << PMU_CHG_IRQ_VBAT_HIGH))
{
printf("vbat high: %d", HAL_PMU_ChgReadStatus(handle, PMU_CHG_IRQ_VBAT_HIGH));
}
}
void config_charger(void)
{
uint32_t current;
uint32_t volt;
//config calibration data for charger, calibration is saved in EFUSE
//cal_param.cc_mn = xxx;
//cal_param.cc_mp = xxx;
//cal_param.bg = xxx;
//cal_param.cv_vctrl = xxx;
//cal_param.rep_vctrl = xxx;
status = HAL_PMU_ChgInit(&pmu_chg_handle, &cal_param);
// config CC current
current = 300; //300mA
current = HAL_PMU_ChgConfigCcCurrent(&pmu_chg_handle, current);
// config target voltage
volt = 4300; //4300mV
volt = HAL_PMU_ChgConfigTargetVolt(&pmu_chg_handle, volt);
// enable IRQ and register callback
HAL_PMU_ChgRegisterCallback(&pmu_chg_handle, pmu_chg_callback);
RT_ASSERT(HAL_OK == status);
RT_ASSERT(HAL_OK == status);
RT_ASSERT(HAL_OK == status);
HAL_NVIC_SetPriority(PMUC_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(PMUC_IRQn);
}
HAL_PMU_ChgReadStatus
int8_t HAL_PMU_ChgReadStatus(PMU_ChgHandleTypeDef *handle, PMU_ChgIrqStatusTypeDef irq)
Read raw charger event status.
HAL_PMU_ChgInit
HAL_StatusTypeDef HAL_PMU_ChgInit(PMU_ChgHandleTypeDef *handle, PMU_ChgCalParamTypeDef *cal_param)
Init charger.
HAL_PMU_EnablePinWakeup
HAL_StatusTypeDef HAL_PMU_EnablePinWakeup(uint8_t pin, uint8_t mode)
Enable pin wakeup for hibernate.
HAL_PMU_ChgConfigIRQ
HAL_StatusTypeDef HAL_PMU_ChgConfigIRQ(PMU_ChgHandleTypeDef *handle, PMU_ChgIrqStatusTypeDef irq, PMU_ChgIrqTrigModeTypeDef trig_mode)
Enable/disable IRQ in specified trig mode.
__PMU_ChgHandleTypeDef
Definition: bf0_hal_pmu.h:130
HAL_OK
@ HAL_OK
Definition: bf0_hal_def.h:75
HAL_PMU_ChgRegisterCallback
void HAL_PMU_ChgRegisterCallback(PMU_ChgHandleTypeDef *handle, PMU_ChgCallbackTypeDef callback)
Register charger IRQ callback which is called when IRQ is triggered.
PMU_BootModeTypeDef
PMU_BootModeTypeDef
Definition: bf0_hal_pmu.h:72
PMU_CHG_IRQ_TRIG_MODE_POS_EDGE
@ PMU_CHG_IRQ_TRIG_MODE_POS_EDGE
Definition: bf0_hal_pmu.h:141
PMU_CHG_IRQ_VBAT_HIGH
@ PMU_CHG_IRQ_VBAT_HIGH
Definition: bf0_hal_pmu.h:151
HAL_NVIC_SetPriority
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Set the priority of an interrupt.
HAL_NVIC_EnableIRQ
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
HAL_PMU_EnableRtcWakeup
HAL_StatusTypeDef HAL_PMU_EnableRtcWakeup(void)
Enable RTC wakeup for hibernate.
PMU_CHG_IRQ_VBUS_RDY
@ PMU_CHG_IRQ_VBUS_RDY
Definition: bf0_hal_pmu.h:150
HAL_PMU_EnterHibernate
void HAL_PMU_EnterHibernate(void)
Make system enter hibernate mode.
HAL_PMU_ChgConfigCcCurrent
uint32_t HAL_PMU_ChgConfigCcCurrent(PMU_ChgHandleTypeDef *handle, uint32_t current)
Configure charger CC current.
PMU_ChgCalParamTypeDef
Definition: bf0_hal_pmu.h:91
HAL_PMU_CheckBootMode
HAL_StatusTypeDef HAL_PMU_CheckBootMode(PMU_BootModeTypeDef *boot_mode, uint32_t *wakeup_src)
Check PMU boot mode.
PMU_CHG_IRQ_TRIG_MODE_DOUBLE_EDGE
@ PMU_CHG_IRQ_TRIG_MODE_DOUBLE_EDGE
Definition: bf0_hal_pmu.h:143
HAL_PMU_ChgConfigTargetVolt
uint32_t HAL_PMU_ChgConfigTargetVolt(PMU_ChgHandleTypeDef *handle, uint32_t volt_mv)
Configure charging full target voltage.
PMU_CHG_IRQ_EOC
@ PMU_CHG_IRQ_EOC
Definition: bf0_hal_pmu.h:156