完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
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(); //有唤醒可唤醒,睡眠模式 RCC_B1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //转子使能 PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //停止模式下电压转换进入低调用模式,调用函数可触发 // 唤醒后调用速度如果不是原来的频率 //可以把SetSysClockTo72复制出来为另外一个调用 //SetSysClockTo72()f4是没有这个函数,可以参考使用场景模式 PWR_EnterSTANDBYMode(); /** * @brief 将 HSI 配置为系统时钟源 **/ void HSI_SetSysClock(){ __IO uint32_t HSIStartUpStatus = 0; RCC_DeInit(); //设置恒指 RCC_HSICmd(ENABLE); HSIStartUpStatus = RCC-》CR & RCC_CR_HSIRDY; if (HSIStartUpStatus == RCC_CR_HSIRDY) { /* 选择稳压器电压输出比例 1 模式 */ 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 定义(STM32F40_41xxx) || 定义(STM32F427_437xx)|| 定义(STM32F429_439xx)|| 定义(STM32F412xG)|| 定义(STM32F446xx)|| 定义(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 定义(STM32F401xx) || 定义(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 定义(STM32F40_41xxx) || 定义(STM32F427_437xx)|| 定义(STM32F429_439xx)|| 定义(STM32F401xx)|| 定义(STM32F469_479xx)/*配置主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 定义(STM32F412xG) || 定义(STM32F413_423xx)|| 定义(STM32F446xx)/*配置主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 */ /* 使能主PLL */ RCC-》CR |= RCC_CR_PLLON; /* 等到主 PLL 就绪 */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } #if defined(STM32F427_437xx) || 定义(STM32F429_439xx)|| 定义(STM32F446xx)|| 定义(STM32F469_479xx)/*启用过驱动将时钟频率扩展到180 Mhz */ PWR-》CR |= PWR_CR_ODEN; 而((PWR-》CSR & PWR_CSR_ODRDY) == 0) { } PWR-》CR |= PWR_CR_ODSWEN; while((PWR-》CSR & PWR_CSR_ODSWRDY) == 0) { } /* 配置 Flash 预取、指令缓存、数据缓存和等待状态 */ FLASH-》ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;#endif /* STM32F427_437x || STM32F429_439xx || STM32F446xx || STM32F469_479xx */ #if 定义(STM32F40_41xxx) || defined(STM32F412xG) /* 配置 Flash 预取、指令缓存、数据缓存和等待状态 */ FLASH-》ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS;#endif /* STM32F40_41xxx || STM32F412xG */ #if defined(STM32F413_423xx) /* 配置Flash预取、指令缓存、数据缓存和等待状态*/ FLASH-》ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_3WS; #endif /* STM32F413_423xx */ #if defined(STM32F401xx) /* 配置Flash预取、指令缓存、数据缓存和等待状态*/ FLASH-》ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS;#endif /* STM32F401xx */ /* 选择主PLL作为系统时钟源*/ RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC)_CFGR_SW) RCC-》CFGR |= RCC_CFGR_SW_PLL;/* 等到主 PLL 用作系统时钟源 */ while ((RCC-》CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); { } }} #endif /* STM32F401xx */ /* 选择主 PLL 作为系统时钟源 */ RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC-》CFGR |= RCC_CFGR_SW_PLL;/* 等到主 PLL 用作系统时钟源 */ while ((RCC-》CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); { } }} #endif /* STM32F401xx */ /* 选择主 PLL 作为系统时钟源 */ RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC-》CFGR |= RCC_CFGR_SW_PLL;/* 等到主 PLL 用作系统时钟源 */ while ((RCC-》CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); { } }} |
|
|
|
只有小组成员才能发言,加入小组>>
2549 浏览 0 评论
1146浏览 2评论
745浏览 1评论
499浏览 0评论
265浏览 0评论
427浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:02 , Processed in 2.369200 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号