当前位置: 首页 > wzjs >正文

网站市场推广wordpress 表 用户文章

网站市场推广,wordpress 表 用户文章,作文网推荐,深圳网站建设厂家哪家好PWR简介 PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值…

PWR简介

  1. PWR(Power Control)电源控制
  2. PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能
  3. 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务
  4. 低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间

 电源框图 

上电复位(POR)和掉电复位(PDR)电路

STM32内部有一个完整的上电复位(POR)和掉电复位(PDR)电路,当供电电压达到2V时系统既能正常工作。忽略迟滞电压40mv,就是低于1.9v掉电,高于1.9v上电。
 

可编程电压监测器 

可编程电压检测器PVD:工作流程 

 低功耗模式

在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

STM32F10xxx有三种低功耗模式:

● 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时

钟(SysTick)等仍在运行)

● 停止模式(所有的时钟都已停止)

● 待机模式(1.8V电源关闭)

此外,在运行模式下,可以通过以下方式中的一种降低功耗:

● 降低系统时钟

● 关闭APB和AHB总线上未被使用的外设时钟。

睡眠模式 

 停止模式

停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止, PLL、HSIHSERC振荡器的功能被禁止, SRAM和寄存器内容被保留下来。
 

待机模式 

 待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。 PLL、 HSI和HSE振荡器也被断电。 SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电

模式选择 

对上面三种模式的总结

  • 执行WFI(Wait For Interrupt)或者WFE(Wait For Event)指令后,STM32进入低功耗模式 

 睡眠模式

  1. 执行完WFI/WFE指令后,STM32进入睡眠模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
  2. SLEEPONEXIT位决定STM32执行完WFI或WFE后,是立刻进入睡眠,还是等STM32从最低优先级的中断处理程序中退出时进入睡眠
  3. 在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态
  4. WFI指令进入睡眠模式,可被任意一个NVIC响应的中断唤醒
  5. WFE指令进入睡眠模式,可被唤醒事件唤醒 

 停止模式

  1. 执行完WFI/WFE指令后,STM32进入停止模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
  2. 1.8V供电区域的所有时钟都被停止,PLL、HSI和HSE被禁止,SRAM和寄存器内容被保留下来
  3. 在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态
  4. 当一个中断或唤醒事件导致退出停止模式时,HSI被选为系统时钟
  5. 当电压调节器处于低功耗模式下,系统从停止模式退出时,会有一段额外的启动延时
  6. WFI指令进入停止模式,可被任意一个EXTI中断唤醒
  7. WFE指令进入停止模式,可被任意一个EXTI事件唤醒 

第三点注意: 我们的程序默认在SystemInit函数里的配置的是使用HSE外部高速时钟,通过PLL倍频得到72MHz的主频,但是进入停止模式之后,PLL和HSE都停止了,而且在退出停止模式时,他并不会再自动帮我们开启PLL和HSE,而是默认用HSI的8MHz,直接作为主频。所以如果忽略了这个问题,那么你程序刚上电,是72MHz的主频,但是进入停止模式后,再唤醒就变成了8MHz的主频了。这是一个问题,所以我们一般再停止模式唤醒后,第一时间就是重新开启HSE,配置为72MHz的主频。

待机模式 

  1. 执行完WFI/WFE指令后,STM32进入待机模式,唤醒后程序从头开始运行
  2. 整个1.8V供电区域被断电,PLL、HSI和HSE也被断电,SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电
  3. 在待机模式下,所有的I/O引脚变为高阻态(浮空输入)
  4. WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位退出待机模式 

修改主频 

接线图 

修改主频可在system_stm32f10x.c文件里找到对应位置解除注释修改

int main(void)
{OLED_Init();							//OLED初始化OLED_ShowString(1, 1, "SYSCLK:");		//显示静态字符串OLED_ShowNum(1, 8, SystemCoreClock, 8);	//显示SystemCoreClock变量//SystemCoreClock的值表示当前的系统主频频率while (1){OLED_ShowString(2, 1, "Running");	//闪烁Running,指示当前主循环运行的快慢Delay_ms(500);OLED_ShowString(2, 1, "       ");Delay_ms(500);}
}

总结:画图总结

 睡眠模式+串口收发

接线图 


uint8_t RxData;			//定义用于接收串口数据的变量int main(void)
{OLED_Init();		//OLED初始化OLED_ShowString(1, 1, "RxData:");	//显示静态字符串Serial_Init();		//串口初始化while (1){if (Serial_GetRxFlag() == 1)			//检查串口接收数据的标志位{RxData = Serial_GetRxData();		//获取串口接收的数据Serial_SendByte(RxData);			//串口测试OLED_ShowHexNum(1, 8, RxData, 2);	//显示串口接收的数据将收到的数据回传回去,用于}OLED_ShowString(2, 1, "Running");		//OLED闪烁Running,指示当前主循环正在运行Delay_ms(100);OLED_ShowString(2, 1, "       ");Delay_ms(100);__WFI();								//执行WFI指令,CPU睡眠,并等待中断唤醒}
}

整个代码工作流程:梳理流程 

注意:程序下载第一次后进入低功耗睡眠模式,后面第二次再下载程序需要先按住系统板的复位键然后点击下载并及时松开复位键,才能下载成功,不然会提示下载失败。在三种低功耗模式下都采用此下载方式。

 停止模式+对射红外传感器

 接线图

int main(void)
{/*模块初始化*/OLED_Init();			//OLED初始化CountSensor_Init();		//计数传感器初始化/*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);		//开启PWR的时钟//停止模式和待机模式一定要记得开启/*显示静态字符串*/OLED_ShowString(1, 1, "Count:");while (1){OLED_ShowNum(1, 7, CountSensor_Get(), 5);			//OLED不断刷新显示CountSensor_Get的返回值OLED_ShowString(2, 1, "Running");					//OLED闪烁Running,指示当前主循环正在运行Delay_ms(100);OLED_ShowString(2, 1, "       ");Delay_ms(100);PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);	//STM32进入停止模式,并等待中断唤醒SystemInit();										//唤醒后,要重新配置时钟}
}

void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)//进入STOP模式

void SystemInit (void)//设置微控制器系统,初始化嵌入式Flash接口,PLL和更新
 SystemCoreClock变量

注意:此功能只能在复位后使用

 代码执行流程:梳理知识

待机模式+实时时钟

 接线图

int main(void)
{OLED_Init();		//OLED初始化MyRTC_Init();		//RTC初始化RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);		//开启PWR的时钟//停止模式和待机模式一定要记得开启OLED_ShowString(1, 1, "CNT :");OLED_ShowString(2, 1, "ALR :");OLED_ShowString(3, 1, "ALRF:");/*使能WKUP引脚*/PWR_WakeUpPinCmd(ENABLE);						//使能位于PA0的WKUP引脚,WKUP引脚上升沿唤醒待机模式/*设定闹钟*/uint32_t Alarm = RTC_GetCounter() + 10;			//闹钟为唤醒后当前时间的后10sRTC_SetAlarm(Alarm);							//写入闹钟值到RTC的ALR寄存器OLED_ShowNum(2, 6, Alarm, 10);					//显示闹钟值while (1){OLED_ShowNum(1, 6, RTC_GetCounter(), 10);	//显示32位的秒计数器OLED_ShowNum(3, 6, RTC_GetFlagStatus(RTC_FLAG_ALR), 1);		//显示闹钟标志位OLED_ShowString(4, 1, "Running");			//OLED闪烁Running,指示当前主循环正在运行Delay_ms(100);OLED_ShowString(4, 1, "       ");Delay_ms(100);OLED_ShowString(4, 9, "STANDBY");			//OLED闪烁STANDBY,指示即将进入待机模式Delay_ms(1000);OLED_ShowString(4, 9, "       ");Delay_ms(100);OLED_Clear();								//OLED清屏,模拟关闭外部所有的耗电设备,以达到极度省电PWR_EnterSTANDBYMode();						//STM32进入停止模式,并等待指定的唤醒事件(WKUP上升沿或RTC闹钟)/*待机模式唤醒后,程序会重头开始运行*/}
}

void RTC_SetAlarm(uint32_t AlarmValue)//设置RTC告警值

参数说明
AlarmValueRTC告警新值

 

void PWR_EnterSTANDBYMode(void)//进入STANDBY(待机)模式 

void PWR_WakeUpPinCmd(FunctionalState NewState)//启用或禁用唤醒引脚功能,取值为:ENABLE或DISABLE,此函数无需GPIO初始化

 最后测试待机模式电流是否为3uA:专业测试


文章转载自:

http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://00000000.kdrLy.cn
http://www.dtcms.com/wzjs/607370.html

相关文章:

  • 做超市促销海报哪个网站好电影网站如何优化
  • 阿里网站建设教程商城app定制
  • 橙色营销网站福州网站推广优化
  • 深圳企业黄页网站网上书城网站系统建设
  • 网站建设推广哪家好磁县企业做网站推广
  • 怎么做网店网站网站建设比较牛的企业
  • 苏网站建设做网站的电话
  • 学校网站建设培训方案模板烟台网站建设
  • 珠宝网站设计广州seo排名优化
  • 中国免费网站服务器下载企业网站的在线推广方法有哪几种
  • word可以做网站链接吗定制开发小程序的公司
  • 做网站如何赢利的网站热销榜怎么做
  • 沧州企业网站专业定制做彩票网站电话多少
  • cn网站建设多少钱企业制度型开放论坛
  • wps2016怎么做网站仪征市建设发展有限公司网站
  • 广州官方网站建设视频网站开发问题
  • s网站优化网站建设与管理的现状
  • 西宁公司网站设计郑州经济技术开发区实验中学
  • 网站开发设计前景新手网站
  • 一级a做爰片365网站网站开发毕业设计说明书范文
  • 秦皇岛网站男生做污污事的视频网站
  • 网站结构优化的内容和方法网站建设公司止一se0
  • 想建设一个网站 一般多少钱如何把网站提交给百度
  • 建站公司还赚钱吗广州网站设计开发
  • 太原网站搜索引擎优化广告东莞网站建设技术支持
  • 桂林市做网站的公司门户网站素材
  • 做网站头文件做现货需要关注的网站
  • 什么专业会做网站网页升级紧急通知91
  • 如何通过网站做网上报名系统河南做网站的公司有哪些
  • 怎么做网站差不多站长中铁建设集团官网