完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PWR
STM32的工作电压(VDD)为2.0~3.6V。通过内置的电压调节器提供电压的1.8V电源。 当主电源VDD掉电后,通过VBAτ脚为实时时钟(RTC)和电源提供电源。 __WFI(); 为arm的内核 PWR函数 PWR_DeInit将外设PWR寄存器重设为值 PWR_BackupAccessCmd使能RTC和后备内存访问 或者使能失能 的可探测电压(PVD)PWR_PVDLevelConfig PVD的探测电压设置阈值 PWR_WakeUpPinCmd使能或者失能唤醒管脚功能 PWR_EnterSTOPMode进入停止(STOP)模式 PWR_EnterSTANDBYMode进入待命(STANDBY)模式 PWR_GetFlagStatus检查指定PWR标志位设置与否 PWR_ClearFlag清除PWR待的处理标志位 函数名PWR_EnterSTOPMode 函数原形空隙PWR_EnterSTOPMode( u32 PWR_Regulator, u8 PWR_STOPEntry) 功能描述进入停止(STOP)模式 输入参数 1 PWR_Regulator:电压转换在停止模式下的状态 部分:PWR_Regulator更多该参数允许取值范围 输入2 PWR_STOPEntry:选择 该参数使用参数WFE还是WFI来进入停止模式部分:PWR_STOPEntry参数更多允许取值范围 输出参数 返回值无 先决条件 __WFI(),WFE() PWR_Regulator 该参数设置了电压变换器在停止模式下的状态(见表330) 表330. PWR_Regulator 值 PWR_Regulator 描述 PWR_Regulator_ON 停止模式下电压转换 ON PWR_Regulator_LowPower 停止模式下电压转换进入节能模式 PWR_STOPEntry 该参数选择使用指令WFE 还是 WFI 来进入停止模式(见表 331) 表 331. PWR_Regulator 值 PWR_STOPEntry 描述 PWR_STOPEntry_WFI 使用指令 WFI 来模式进入停止模式 PWR_STOPEntry_WFE 使用指令 WFE 来 停止模式进入停止模式下,注册为 HSI 模式下与后没什么重启区别 例子 int main() { led_ConfigurAction(); SysTick_ConfigurAction(); PE2_EXIT_ConfigurAction(); while(1) { //操作 } //__WFI(); //任一中断可唤醒, sleep模式 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //时钟使能 PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //停止模式下电压转换器进入低功耗模式,任一中断可唤醒 //,唤醒后时钟速度如果不是原来的频率 //可以把SetSysClockTo72 copy出来为另外一个函数调用 //SetSysClockTo72() f4是没有这个函数,可以参考使用寄存器 //待机模式 PWR_EnterSTANDBYMode(); //进入待机模式,WKUP给上升沿就可唤醒,或者复位 } 配置HSI寄存器代码 /** * @brief Configures HSI as the System clock source **/ void HSI_SetSysClock() { __IO uint32_t HSIStartUpStatus = 0; RCC_DeInit(); //set HSI RCC_HSICmd(ENABLE); HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY; if (HSIStartUpStatus == RCC_CR_HSIRDY) { /* Select regulator voltage output Scale 1 mode */ RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR |= PWR_CR_VOS; // HCLK = SYSCLK / 1 RCC_HCLKConfig(RCC_SYSCLK_Div1); /* HCLK = SYSCLK / 1*/ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F412xG) || defined(STM32F446xx) || defined(STM32F469_479xx) /* PCLK2 = HCLK / 2*/ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* PCLK1 = HCLK / 4*/ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; #endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx || STM32F412xG || STM32F446xx || STM32F469_479xx */ #if defined(STM32F401xx) || defined(STM32F413_423xx) /* PCLK2 = HCLK / 1*/ RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; /* PCLK1 = HCLK / 2*/ RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; #endif /* STM32F401xx || STM32F413_423xx */ #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx) /* Configure the main PLL */ RCC->PLLCFGR = HSI_PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | (RCC_PLLCFGR_PLLSRC_HSI) | (PLL_Q << 24); #endif /* STM32F40_41xxx || STM32F401xx || STM32F427_437x || STM32F429_439xx || STM32F469_479xx */ #if defined(STM32F412xG) || defined(STM32F413_423xx) || defined(STM32F446xx) /* Configure the main PLL */ RCC->PLLCFGR = HSI_PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | (RCC_PLLCFGR_PLLSRC_HSI) | (PLL_Q << 24) | (PLL_R << 28); #endif /* STM32F412xG || STM32F413_423xx || STM32F446xx */ /* Enable the main PLL */ RCC->CR |= RCC_CR_PLLON; /* Wait till the main PLL is ready */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } #if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx) /* Enable the Over-drive to extend the clock frequency to 180 Mhz */ PWR->CR |= PWR_CR_ODEN; while((PWR->CSR & PWR_CSR_ODRDY) == 0) { } PWR->CR |= PWR_CR_ODSWEN; while((PWR->CSR & PWR_CSR_ODSWRDY) == 0) { } /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; #endif /* STM32F427_437x || STM32F429_439xx || STM32F446xx || STM32F469_479xx */ #if defined(STM32F40_41xxx) || defined(STM32F412xG) /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; #endif /* STM32F40_41xxx || STM32F412xG */ #if defined(STM32F413_423xx) /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_3WS; #endif /* STM32F413_423xx */ #if defined(STM32F401xx) /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS; #endif /* STM32F401xx */ /* Select the main PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= RCC_CFGR_SW_PLL; /* Wait till the main PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); { } } } |
|
|
|
只有小组成员才能发言,加入小组>>
2496 浏览 0 评论
1059浏览 2评论
678浏览 1评论
440浏览 0评论
175浏览 0评论
292浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 14:59 , Processed in 1.223562 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号