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

导航在左侧的网站欣赏推广教程

导航在左侧的网站欣赏,推广教程,免费营销培训,营销推广平台都干什么的目录 一、待机模式基础知识 1、进入待机模式 2、待机模式的状态 3、退出待机模式 二、待机模式应用示例 1、示例功能和CubeMX项目设置 #xff08;1#xff09; 时钟 #xff08;2#xff09; DEBUG、LED1、KeyRight、USART6、CodeGenerator #xff08;3#x…目录 一、待机模式基础知识 1、进入待机模式 2、待机模式的状态 3、退出待机模式 二、待机模式应用示例 1、示例功能和CubeMX项目设置 1 时钟 2 DEBUG、LED1、KeyRight、USART6、CodeGenerator 3 SYS_WKUP 4 NVIC 2、软件设计 1KEYLED  2main.c 3、运行与调试 一、待机模式基础知识 1、进入待机模式 待机模式是几种低功耗模式中功耗最低的。要通过WFI指令或WFE指令进入待机模式需要将系统控制寄存器SCR中的SLEEPDEEP位置1将电源控制寄存器PWR_CR中的PDDS位置1。函数HAL_PWR_EnterSTANDBYMode()实现进入待机模式的功能其源代码如下 void HAL_PWR_EnterSTANDBYMode(void) {/*选择STANDBY模式*/SET_BIT(PWR-CR,PWR_CR_PDDS);/*将Cortex系统控制寄存器的SLEEPDEEP位置1 */SET_BIT(SCB-SCR,((uint32_t)SCB_SCR_SLEEPDEEP_Msk));/*下面的选项用于确保完成了保存操作*/#if defined(__CC_ARM)__force_stores();#endif/*Request Wait For Interrupt */__WFI(); } 函数HAL_PWR_EnterSTANDBYMode()没有任何参数直接使用WFI指令进入待机模式。 2、待机模式的状态 进入待机模式后系统的状态如下。 1.2V调压器关闭1.2V域全部断电寄存器和SRAM的内容丢失。PLL、HSI振荡器、HSE振荡器都关闭。VBAT供电的RTC寄存器、备份域SRAM的内容保留RTC可继续工作。所有外设停止工作除了复位引脚、SYS_WKUP引脚(PA0)和RTC的输出复用引脚其他引脚都是高阻态。 3、退出待机模式 用户可以通过以下方式中的任何一种退出待机模式。 NRST引脚的外部硬件复位。独立看门狗复位。SYS_WKUP引脚(PA0引脚)上升沿信号。RTC的闹钟事件、周期唤醒事件、入侵事件或时间戳事件。 系统从待机模式唤醒后不是从进入待机模式处的代码继续执行而是整个系统复位从头开始执行所以其唤醒延迟时间就是复位阶段的时间。 通常使用SYS_WKUP引脚连接的按键使系统从待机模式唤醒HAL库有两个函数设置启用或禁用SYS_WKUP引脚两个函数的调用代码如下 HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); //启用SYS_WKUP引脚 HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //禁用SYS_WKUP引脚 其中PWR_WAKEUP_PIN1是宏定义常量STM32F40x系列只有一个SYS_WKUP引脚。启用或禁用SYS_WKUP引脚就是设置电源控制/状态寄存器PWR_CSR中的EWUP位为1或0。 二、待机模式应用示例 本文将创建一个示例项目测试系统的STOP模式。继续使用旺宝红龙开发板STM32F407ZGT6 KIT V1.0。一些设置参考本文作者的其他文章。 参考文章细说STM32F407单片机电源低功耗StopMode模式及应用示例-CSDN博客  https://wenchm.blog.csdn.net/article/details/145264762 1、示例功能和CubeMX项目设置 本文将创建一个示例并演示如何使用待机模式。示例功能和使用流程如下。 在CubeMX中配置PA0为SYS_WKUP信号用于使系统在待机模式下唤醒。程序运行时检测到KeyRight键按下后就进入待机模式。在待机模式下按下KeyUp键使系统唤醒。 1 时钟 外部时钟25MHz设置到HCLK168MHzPCLK142MHzPCLK284MHz其它都设置成168MHz。 2 DEBUG、LED1、KeyRight、USART6、CodeGenerator 同参考文章或参照参考文章。 3 SYS_WKUP 在SYS组件的模式设置部分勾选System Wake-Up复选框如图所示这样PA0就会作为SYS_WKUP引脚无须再为PA0进行GPIO设置。 注意SYS_WKUP引脚是PA0引脚也就是KeyUp键连接的引脚。当PA0作为SYS_WKUP时KeyUp键就不能作为一个普通按键不能用轮询或中断方式检测其输入。 4 NVIC 修改TimeBase的优先级为1。 2、软件设计 1KEYLED  本示例工程继续引用KEYLED文件夹中的keyled.h详见参考文章。 2main.c /* USER CODE BEGIN Includes */ #include keyled.h #include stdio.h //用到函数sprintf() /* USER CODE END Includes *//* USER CODE BEGIN 2 */HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); //使能WKUP引脚必须执行printf(Demo22_3_StandbyMode:Test Standby Mode.\r\n\r\n);if (__HAL_PWR_GET_FLAG(PWR_FLAG_WU)SET) //被WKUP、RTC事件唤醒{printf(Note: After Standby, press the WKUP to wake up.\r\n);__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //必须清除WUF否则连续唤醒}if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB)SET) //从StandBy模式复位{HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //禁止SYS_WKUP引脚消除抖动影printf(Reset from Standby mode.\r\n);__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB); //清除标志位SBF}printf(Press [S5]KeyRight to enter Standby.\r\n\r\n);LED1_ON();/* USER CODE END 2 */ 系统在待机模式下被唤醒后系统复位并从头开始执行程序。程序在复位并完成初始化后需要对电源控制/状态寄存器PWR_CSR中的WUF(唤醒标志)位和SBF(待机标志)位进行检测和清除。 ● WUF(Wakeup Flag)位是由硬件置1的。如果WUF位是1表示器件复位前发生了待机模式的唤醒事件如SYS_WKUP、RTC闹钟、RTC入侵事件、RTC时间戳事件、RTC周期唤醒但是不包括复位引脚NRST导致的复位。要清除WUF位需要向电源控制寄存器PWR_CR的CWUF位写1。所以查询和清除WUF位的代码如下 if(__HAL_PWR_GET_FLAG(PWR_FLAG_WU)SET) //被WKUP、RTC事件唤醒 {__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //必须清除WUF,否则连续唤醒 } 如果WUF位是1必须清除这个位否则在后面再进入待机模式后会立刻被唤醒。 ● SBF(StandBy Flag)位是由硬件置1的。如果SBF位是1表示器件在复位前进入了待机模式如果SBF位是0表示器件复位前未进入待机模式。要清除SBF位需要向电源控制寄存器PWR_CR的CSBF位写1。所以查询和清除SBF位的代码段如下 if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB)SET) //从StandBy模式复位 {HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //禁止SYS_WKUP引脚消除抖动影响 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB); //清除SBF位 } 在判断是从待机模式复位后程序还立刻禁用了SYS_WKUP引脚PA0。如果SYS_WKUP引脚已经被启用即使没有进入待机状态按一下KeyUp键也会被记录一次唤醒操作那么在按下KeyRight键进入待机模式后会立即被唤醒。所以在正常运行模式下应该禁用SYS_WKUP引脚只有在进入待机模式之前才启用SYS_WKUP引脚。 /* USER CODE BEGIN 3 */KEYS curKeyScanPressedKey(KEY_WAIT_ALWAYS);if(curKeyKEY_RIGHT) //KeyRight键{HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);//使能WKUP引脚必须执行printf(Be in Standby mode now.\r\n);printf(Press [S2]KeyUp to wake up, or\r\n);printf(press [S6]Reset to reset system.\r\n\r\n);HAL_PWR_EnterSTANDBYMode(); //进入待机模式唤醒就使系统恢复//LED1 自动灭因为待机模式下引脚是高阻}}/* USER CODE END 3 */ 完成这些检测后在while循环中检测按键输入在KeyRight键被按下后启用SYS_WKUP引脚然后调用函数HAL_PWR_EnterSTANDBYMode()进入待机模式。进入待机模式后与LED1连接的PF9引脚变成高阻态LED1自然就熄灭了。 /* USER CODE BEGIN 4 */ int __io_putchar(int ch) {HAL_UART_Transmit(huart6,(uint8_t*)ch,1,0xFFFF);return ch; } /* USER CODE END 4 */ 3、运行与调试 用户还可以在CubeMX里对本示例进行功耗计算RUN模式下的耗电流是48.51mASTANDBY模式下的耗电流是3μA。选用3400mAh的锂电池供电1年6月23天11小时。
http://www.dnsts.com.cn/news/87789.html

相关文章:

  • 免费课程网站有哪些郑州网站建设找汉狮
  • 专业的网站设计建设云闪付当前页面设计隐私
  • 网站文章模板面包机做面包网站
  • 电脑机箱定制网站咕果网给企业做网站的
  • 品牌营销型网站建设公司如何建立官网
  • 企业网站的推广方式二手网站专业做附近人的有吗
  • 建设网站方法有哪些内容linx服务器怎么做网站
  • 建设网站用什么时候开始建展公司
  • wordpress访问满网站优化和提升网站排名怎么做
  • 济南网站开发建设哪家做网站的好
  • 苏州网站建设公司科技城微网站建设找哪家公司好
  • 延安网站建设公司电话嘉兴网站托管
  • 聊城房地产网站建设软件开发工程师就是程序员吗
  • 深圳网站官网建设怎么做自己网站产品seo
  • 网站建设正文字体多大合适山东宏远建设有限公司网站
  • 广东住房城乡建设厅网站首页东莞微信网站商城建设
  • 网站主持人制作本机部署wordpress超慢
  • 青岛网站关键词排名优化抓取wordpress站点用户
  • 搭建网站要不要给域名对方汽车网站代码
  • 和魔鬼做交易的网站三亚做网站推广
  • 滁州商业网站建设网建天地小区
  • 网站营销合同信息公开和网站建设工作总结
  • wordpress按钮下拉菜单合肥网站优化服务网
  • 仿阿里云网站做seo要明白网站内容乃重中之重
  • 网站建设费一般摊销几年怎么做私人网站
  • 网站模糊设计做网站公司怎么找客户
  • wordpress栏目管理重庆seo公司排名
  • 游戏网站怎么建设系统之家一键重装
  • 网站做app开发工具asp网站首页模板
  • 中国建设学会查询网站网站的 联系我们怎么做