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

中小企业网站规划方案华大基因背景调查

中小企业网站规划方案,华大基因背景调查,济宁网站开发平台,电子政务网站建设的特点目录 一、待机模式基础知识 1、进入待机模式 2、待机模式的状态 3、退出待机模式 二、待机模式应用示例 1、示例功能和CubeMX项目设置 (1) 时钟 (2) DEBUG、LED1、KeyRight、USART6、CodeGenerator (3&#x…

目录

一、待机模式基础知识

1、进入待机模式

2、待机模式的状态

3、退出待机模式

二、待机模式应用示例

1、示例功能和CubeMX项目设置

(1) 时钟

(2) DEBUG、LED1、KeyRight、USART6、CodeGenerator

(3) SYS_WKUP

(4) NVIC

2、软件设计

(1)KEYLED 

(2)main.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项目设置

本文将创建一个示例并演示如何使用待机模式。示例功能和使用流程如下。

  1. 在CubeMX中配置PA0为SYS_WKUP信号,用于使系统在待机模式下唤醒。
  2. 程序运行时,检测到KeyRight键按下后,就进入待机模式。
  3. 在待机模式下,按下KeyUp键使系统唤醒。

(1) 时钟

        外部时钟,25MHz,设置到HCLK=168MHz,PCLK1=42MHz,PCLK2=84MHz,其它,都设置成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、软件设计

(1)KEYLED 

        本示例工程继续引用KEYLED文件夹中的keyled.h,详见参考文章。

(2)main.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 curKey=ScanPressedKey(KEY_WAIT_ALWAYS);if(curKey==KEY_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.51mA,STANDBY模式下的耗电流是3μA。选用3400mAh的锂电池供电,1年6月23天11小时。

 

http://www.yayakq.cn/news/912894/

相关文章:

  • 怎样建立公司的网站网站502 解决办法
  • 专业建设网站外包wordpress博客建站
  • a市最牛的网站专业网站建设公司郑州
  • php网站后台程序名字设计logo图片
  • 网站开发与建设主要干什么seo技术培训唐山
  • 网站建设与设计 毕业设计淮北发展
  • 湖北建设网站信息查询中心建站公司哪家好
  • iis7.0配置网站网络服务公司
  • 免费网站在线制作如何制作漂亮的微信公众号
  • 34线城市做网站推广美橙互联网站
  • 遵义住房城乡建设厅网站php开发微信小程序
  • 聊城网站建设价位手机网站页面设计要求
  • 全国定制网站服务器云主机2008r2 iis网站验证码不显示
  • 成都专业网站制作建设wordpress后台卡
  • vs2008可以做网站网页设计的毕业设计
  • 主机如何做服务器建网站一个企业是如何做网站建设的
  • 福永响应式网站建设咸阳学校网站建设多少钱
  • 甘肃建设厅职称查询官方网站首钢建设网站
  • 徐汇网站制作网站搭建合同范本
  • 织梦制作手机网站模板深圳市建设银行网站
  • 手机网站如何生成app网站建设策划书是由谁编写的
  • 怎样把网站的背景图片网址缩短生成链接
  • 医疗 企业 网站制作wordpress+4.4
  • 网站服务器购买价格网站代码如何做优化
  • 网站哪类业务建设投入会带来间接收益怎么制作网站维护公告效果
  • 做搜狗网站优移动互联网开发官网
  • php网站开发案例教程上海专业网站建站品牌
  • 网格系统网站wordpress 增加 推荐
  • 网站投票活动怎么做基于asp.net的视频网站开发
  • 怎么用源码做网站视频微信公众号登录不了