码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • stm32cubemx hal学习记录:PWR 低功耗睡眠模式


    一、低功耗睡眠模式简介

    1、简介

    睡眠模式分为两种进入方式:①调用WFI命令。②调用WFE命令。

    相同点:

    睡眠模式:内核停止,所有外设包括M3核心的外设,如NVIC、系统时钟等仍在运行

    对1.8v区域时钟的影响:内核时钟关,对其他时钟和ADC时钟无影响

    对VDD区域时钟的影响:无

    调压器:开

    不同点:

    睡眠模式1     进入方式:调用WFI命令          唤醒方式:任意中断

    睡眠模式2     进入方式:调用WFE命令        唤醒方式:唤醒事件

    2、命令解释:

    WFI:等待中断唤醒

    WFE:等待事件唤醒

    3、使用到的代码

     // 挂起(暂停)系统时钟中断

    HAL_SuspendTick(); 

    //进入睡眠模式, 任意中断唤醒
    HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
      
    //恢复系统时钟中断 
    HAL_ResumeTick();

    二、配置过程

    1、配置RCC、SYS、USART1、时钟84MHz

    2、添加WK_UP按键PA0的外部中断模式,LED灯PF9、PF10输出模式

    3、生成代码

    三、代码编写

    1、在it.c中添加按键外部中断回调函数

    1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    2. {
    3. if(GPIO_Pin==GPIO_PIN_0)
    4. {
    5. HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);
    6. }
    7. }

     2、在main中添加实验代码

    1. //执行任务,第一个灯亮,两秒后灯灭
    2. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);
    3. HAL_Delay(2000);
    4. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);
    5. //第二个灯亮,进入睡眠状态
    6. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET);
    7. // 暂停滴答时钟,防止通过滴答时钟中断唤醒
    8. HAL_SuspendTick();
    9. // 进入睡眠模式
    10. HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);
    11. // 按下按键,被唤醒后,恢复滴答时钟,灯亮,再灭掉
    12. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);
    13. HAL_ResumeTick();
    14. HAL_Delay(2000);
    15. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);

  • 相关阅读:
    ASP.NET Core 6框架揭秘实例演示[05]:依赖注入基本编程模式
    python使用mitmproxy和mitmdump抓包以及对手机
    Java基础练习(运算符的使用、Java的连续输入与输出、Java中分别输出整数、小数、字符串)
    进程控制3——进程程序替换
    JAVA Stream流
    【简单介绍下Debian常用命令】
    改进YOLOv7系列:首发最新结合Non-local Networks and Attention结构(附YOLOv5改进),目标检测高效涨点
    免费体验CSDN云IDE使用指南
    Linux开发环境配置
    消息队列与快递柜之间的奇妙关系
  • 原文地址:https://blog.csdn.net/ohhjack/article/details/127801636
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号