HAL库:GPIO唤醒模式 唤醒睡眠模式下的单片机

news2024/9/20 20:19:09

目录

HAL库:GPIO唤醒模式 唤醒睡眠模式下的单片机

注意事项:

初始化部分:

主函数测试部分

结果如图


HAL库:GPIO唤醒模式 唤醒睡眠模式下的单片机

注意事项:

  • HAL库滴答定时器默认为打开状态,需要关闭后再进入睡眠,否则滴答会唤醒睡眠的单片机。在唤醒后可以再次打开
  • 不明白单片机的低功耗模式,可以看我这篇博客STM32 PWR电源控制 与 低功耗模式 详解_stm32低功耗-CSDN博客
  • 使用唤醒模式需要添加HAL_PWR.c的文件。
  • 单片机进入睡眠模式的指令为HAL_PWR_EnterSLEEPMode(0,PWR_SLEEPENTRY_WFE) 第一个参数是为了移植所用。第二个参数是进入 事件唤醒模式。

初始化部分:

  • 按键为低电平有效。所以为上拉电阻
  • 唤醒模式配置为检测到下降沿 进入唤醒
//唤醒模式初始化
void KEY_Init_Event(void)
{
    __HAL_RCC_GPIOB_CLK_ENABLE();   //开启GPIOB时钟
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.Mode = GPIO_MODE_EVT_FALLING; //下降沿触发 唤醒  
    GPIO_InitStructure.Pin = GPIO_PIN_10;
    GPIO_InitStructure.Pull = GPIO_PULLUP; 
    HAL_GPIO_Init(GPIOB,&GPIO_InitStructure);//配置PB 10的模式
}

主函数测试部分

#include "stm32f1xx_hal.h"

#include "rcc.h"
#include "led.h"
#include "key.h"

/*函 数 名:设置PB10 时间模式 唤醒睡眠的stm32
 *参    数:
 *返 回 值:
 *注意事项:
 */

 
int main (void)
{
    HAL_Init();//初始化HAL库
    
    RccClock_Init();//配置时钟树72M
    
    LED_Init();//LED初始化
    
    KEY_Init_Event();
    
    while(1)
    {
		    //唤醒后闪灯
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);
        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);
        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);
        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);
        
        HAL_SuspendTick();  //暂停滴答定时器
        
        HAL_PWR_EnterSLEEPMode(0,PWR_SLEEPENTRY_WFE);   //进入睡眠模式
        
        HAL_ResumeTick();   //重启滴答定时器
    }

}

结果如图

  • 每次按下唤醒单片机,然后进入while循环 单片机进入睡眠。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2079414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI学习指南深度学习篇:循环神经网络(RNN)Python实践

引言 在人工智能的广袤领域中,循环神经网络(Recurrent Neural Networks, RNNs)因其在处理序列数据中的卓越表现而广受关注。RNN的独特之处在于它能够保留输入数据的历史信息,并利用这些信息来预测后续的输出,这使得它在自然语言处理、时间序列预测等领域中拥有广泛的应用…

新审视零阶优化在内存高效大模型微调中的应用

人工智能咨询培训老师叶梓 转载标明出处 随着大模型模型规模的增大,反向传播(BP)所需的内存开销也日益增加,这对内存效率提出了挑战。尤其是在设备上训练等内存效率至关重要的应用场景中,解决这一问题变得尤为迫切。 …

Sora 代码规范之Refactor this method to not always return the same value.(目的性问题)

Sora描述 Refactor this method to not always return the same value.(目的性问题) 上述代码,可能出现 总是返回 null 的情况 解决一下 原因:为什么要这么写呢?因为 下面的代码会对 materialInfos 这个集合处理&#…

房子公摊要消失了?

文|琥珀食酒社 作者 | 璇子 你敢信 才短短三个月 江苏、浙江、广东 这三房价高昂的城市 陆续宣布房市重大改革信号 比如将空中花园绿化阳台、 小区景观绿化亭廊 、 开放式风雨连廊等不计容积率 挑高客厅只算单层面积 甚至部分区域买房面积 直接按照套内面…

足球联赛|基于SprinBoot+vue的足球联赛管理系统(源码+数据库+文档)

足球联赛管理系统 目录 基于SprinBootvue的足球联赛管理系统 一、前言 二、系统设计 三、系统功能设计 5.1 系统前台功能实现 5.2 后台功能模块实现 5.2.1 管理员模块实现 5.2.2 用户后台模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

20+岁老牌定制家居品牌,如何靠呼叫中心捕获年轻消费者?

Home Tour类一镜到底的短视频,在社交平台一直备受年轻人喜爱。金牌厨柜这个20多岁的老牌定制家居品牌,不仅在高端厨柜和定制家居领域有着深厚的积累,而且一直也在探索数字化转型的新路径:用全新的数字化体系,迎合年轻一…

使用VScode的Git版本控制功能(图文版)

☁️ 前言 今天让我来手把手教你简单入门VScode自带的Git版本控制。 🎉 初始化仓库 初始化仓库之后,仓库里的文件发生了任何改动都会有相应的提示,这对于我们开发和维护项目非常有帮助。 🎉提交更改 初始化仓库之后&#xff…

机器学习:K-means算法及代码实现

1、K-means算法原理 K-means算法是一种常用的聚类算法,其目的是将数据集划分为K个簇(clusters),使得每个簇内部的数据点尽可能相似,而簇与簇之间的数据点尽可能不同。以下是K-means算法的基本原理和步骤: 初…

【C++】C++中的字符串

提示并输入一个字符串&#xff0c;统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 #include <iostream>using namespace std; void total(string str); int main() {string str;cout << "请输入一个字符串:" ;//cin >>str;getline(…

SAP怎么查找系统全部的增强点呢?

1.在已有的BADI查找程序里面有点手无足措的样子&#xff0c;不知道该如何去找增强&#xff01; 2.这个时候刚刚接触系统还不熟悉&#xff0c;系统里面存在了什么增强&#xff0c;这个时候咋办捏&#xff1f;SE38 -SNIF 此时全部的增强点都在这里面啦&#xff01;&#xff01;&…

使用LinkedHashMap实现固定大小的LRU缓存

使用LinkedHashMap实现固定大小的LRU缓存 1. 什么是LRU&#xff1f; LRU是"Least Recently Used"的缩写&#xff0c;意为"最近最少使用"。LRU缓存是一种常用的缓存淘汰算法&#xff0c;它的核心思想是&#xff1a;当缓存满时&#xff0c;优先淘汰最近最少…

二、设置地图配置表

一、导入一个背景图 由于背景图比较大&#xff0c;需要缩小至0.73 二、写配置文件&#xff08;SO&#xff09; 使用List需要一个命名空间 写一个类&#xff0c;声明房间的出现数量和种类&#xff1b;将它实例化出来 三、枚举变量的多选 在枚举变量中标记命名空间&#xff…

C++:list篇

前言: 观看C的list前需要对链表有一些了解&#xff0c;如C语言的链表结构。本片仅介绍list容器中常用的接口函数概念以及使用。 list的概念&#xff1a; 简而言之&#xff0c;C的list是一个双向带哨兵位的链表容器模板 list的构造&#xff1a; 1.list():默认构造 2.li…

2024最新版Python+Pycharm安装教程,安装、环境配置、汉化全搞定,保姆级教学!

一、Python下载 为了节约时间&#xff0c;我将PythonPycharm安装包、集火码全部打包上传至CSDN官方&#xff0c;可放心下载&#xff0c;完全免费&#xff01;&#xff08;安装包均为最新版本&#xff09; 二、Python安装 1.双击运行本地文件夹下的python安装包&#xff08;以…

c++关于字符串的联系

提示并输入一个字符串&#xff0c;统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 #include <iostream> #include<string> using namespace std;int main() {string s1;int letter0,digit0,space0,other0;cout<<"请输入一个字符串:"…

Visual Studio 2022 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开字体和颜色对话框2. 设置【文本编辑器】字体大小3. 设置【编辑器智能提示框】字体大小4. 设置【编辑器方法提示框】字体大小5. 设置【输出框】、【错误列表框】字体大小6. 设置【终端】字体大小7. 设置【程序包管理…

线程基础和线程间通信

作业一:创建3个线程&#xff0c;一个子线程拷贝文件的前一半&#xff0c;一个子线程拷贝后一半文件&#xff0c;主线程回收子线程资源。 #include <myhead.h> //定义结构体变量 typedef struct {const char *src_file;const char *dest_file;int start;int end; } Copy;…

IAR软件配置笔记

Project->Optiions->配置Device Debug中配置 C/C Compiler中配置 优化等级 C语法标准选择 回到主界面&#xff0c;Tools->Options 字体调整 Editor更改缩进数 Project->Make编译 调试模式和编辑模式的View菜单栏不一样http://t.csdnimg.cn/JsWjy

百度网盘下载的文件怎么打印?

一、自有打印机情况下的打印方法 如果您家中或办公室配备有打印机&#xff0c;那么打印百度网盘上的文件就变得非常简单了。首先&#xff0c;请确保您的打印机已连接并设置妥当。以下是基本的操作流程&#xff1a; 下载文件&#xff1a;从百度网盘中下载所需的文件至您的计算…

关于重复消费的一些解决方案

重复消费问题一直是一个热点问题&#xff0c;不管是面试还是实际工作过程中都会遇到&#xff0c;今天我就盘一下这个问题。 1. 重复消费是怎么出现的 重复消费的问题出现的情况有很多&#xff0c;我列举一下常见的吧&#xff1a; 用户重复提交表单。 用户使用软件恶意刷单。…