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

使用MPU6050产生中断,唤醒休眠中的STM32

本篇文章源码:STM32L431_RT_Thread_PM_mpu6050_wakeup: 使用MPU6050产生中断,唤醒休眠中的STM32L4

书接上回【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗-CSDN博客

上一篇文章使用PA0外接一个按键实现唤醒单片机,因为公司项目需求,需要设备在MPU6050产生位移时唤醒单片机,话不多说直接开始

一.使用MPU6XXX软件包

 

去掉磁力计,打开示例工程

 保存,编译

二.配置RTT工程

 打开模拟I2C

打开I2C1宏定义

 将packages\mpu6xxx-v1.1.1\samples\mpu6xxx_sample.c里边的i2c2改为i2c1

 编译下载,然后终端输入mpu6xxx_test,现象:

 MPU6050驱动成功

三.修改MPU6050驱动

因为MPU6050要经过配置,才能产生正确的中断信号,我们直接去修改源码

packages\mpu6xxx-v1.1.1\src\mpu6xxx.c里找到struct mpu6xxx_device *mpu6xxx_init(const char *dev_name, rt_uint8_t param)

在源码的配置下边加入我们自己的配置

    // 复位设备mpu6xxx_write_reg(dev, MPU6XXX_RA_PWR_MGMT_1, 0x80); // 复位HAL_Delay(100);// 清除复位并配置电源管理mpu6xxx_write_reg(dev, MPU6XXX_RA_PWR_MGMT_1, 0x01); // 设置时钟源为 PLL with X axis gyro referencempu6xxx_write_reg(dev, MPU6XXX_RA_PWR_MGMT_2, 0x00); // 启用所有传感器// 配置加速度计mpu6xxx_write_reg(dev, MPU6XXX_RA_ACCEL_CONFIG, 0x00); // ±2g// 配置陀螺仪mpu6xxx_write_reg(dev, MPU6XXX_RA_GYRO_CONFIG, 0x08); // ±500°/s// 配置数字低通滤波器mpu6xxx_write_reg(dev, MPU6XXX_RA_CONFIG, 0x00); // 禁用 DLPF// 配置采样率分频器mpu6xxx_write_reg(dev, MPU6XXX_RA_SMPLRT_DIV, 0x00); // 不分频// 配置运动检测mpu6xxx_write_reg(dev, MPU6XXX_RA_MOT_THR, 0x20); // 设置运动检测阈值mpu6xxx_write_reg(dev, MPU6XXX_RA_MOT_DUR, 0x01); // 设置运动检测持续时间// 配置中断引脚mpu6xxx_write_reg(dev, MPU6XXX_RA_INT_PIN_CFG, 0x10); // 高电平有效,推挽输出// 启用运动检测中断mpu6xxx_write_reg(dev, MPU6XXX_RA_INT_ENABLE, 0x40); // 启用运动检测中断

修改packages\mpu6xxx-v1.1.1\samples\mpu6xxx_sample.c整个文件

/** Copyright (c) 2006-2022, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2018-10-23     flybreak     the first version*/#include <rtthread.h>
#include "mpu6xxx.h"/* Default configuration, please change according to the actual situation, support i2c and spi device name */
#define MPU6XXX_DEVICE_NAME "i2c1"static void mpu6xxx_thread_entry(void *parameter)
{struct mpu6xxx_device *dev;struct mpu6xxx_3axes accel, gyro;/* Initialize mpu6xxx, The parameter is RT_NULL, means auto probing for i2c*/dev = mpu6xxx_init(MPU6XXX_DEVICE_NAME, RT_NULL);if (dev == RT_NULL){rt_kprintf("mpu6xxx init failed\n");return;}rt_kprintf("mpu6xxx init succeed\n");while (1){mpu6xxx_get_accel(dev, &accel);mpu6xxx_get_gyro(dev, &gyro);rt_kprintf("accel.x = %3d, accel.y = %3d, accel.z = %3d ", accel.x, accel.y, accel.z);rt_kprintf("gyro.x = %3d gyro.y = %3d, gyro.z = %3d\r\n", gyro.x, gyro.y, gyro.z);rt_thread_mdelay(500);}mpu6xxx_deinit(dev);
}static int mpu6xxx_test()
{rt_thread_t tid;/* Create a thread to run the mpu6xxx sensor test */tid = rt_thread_create("mpu6xxx_test", mpu6xxx_thread_entry, RT_NULL, 1024, 25, 10);if (tid != RT_NULL){rt_thread_startup(tid);rt_kprintf("mpu6xxx test thread created successfully\n");}else{rt_kprintf("Failed to create mpu6xxx test thread\n");return -1;}return 0;
}MSH_CMD_EXPORT(mpu6xxx_test, mpu6xxx sensor test function);

编译下载,将MPU6050的INT引脚接在板子的PA0,在终端输入mpu6xxx_test,每次晃动传感器,都会触发中断

相关文章:

使用MPU6050产生中断,唤醒休眠中的STM32

本篇文章源码&#xff1a;STM32L431_RT_Thread_PM_mpu6050_wakeup: 使用MPU6050产生中断&#xff0c;唤醒休眠中的STM32L4 书接上回【笔记】STM32L4系列使用RT-Thread Studio电源管理组件&#xff08;PM框架&#xff09;实现低功耗-CSDN博客 上一篇文章使用PA0外接一个按键实…...

如何借助人工智能AI模型开发一个类似OpenAI Operator的智能体实现电脑自动化操作?

这几天关于Manus的新闻铺天盖地&#xff0c;于是研究了一下AI智能体的实现思路&#xff0c;发现Openai 的OpenAI Operator智能体已经实现了很强的功能&#xff0c;但是每月200美金的价格高不可攀&#xff0c;而Manus的邀请码据说炒到了几万块&#xff01;就想能不能求助人工智能…...

蓝桥杯备赛:炮弹

题目解析 这道题目是一道模拟加调和级数&#xff0c;难的就是调和级数&#xff0c;模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程&#xff0c;可能出现来回跳的情况&#xff0c;那么为了解决这种情况&#xff0c;我们采取的方法是设定其的上限步数。那么…...

Mysql中的常用函数

1、datediff(date1,date2) date1减去date2&#xff0c;返回两个日期之间的天数。 SELECT DATEDIFF(2008-11-30,2008-11-29) AS DiffDate -- 返回1 SELECT DATEDIFF(2008-11-29,2008-11-30) AS DiffDate -- 返回-1 2、char_length(s) 返回字符串 s 的字符数 3、round(x,d)…...

安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道

安孚科技出手&#xff0c;发力固态电池。 3月7日晚间&#xff0c;安孚科技&#xff08;603031.SH&#xff09;发布公告称&#xff0c;公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司&#xff08;下称“南平绿色产业基金”&#xff09;、高能时代&#xff08;广东横…...

前端知识点---库和包的概念

1. 什么是库&#xff08;Library&#xff09;&#xff1f; 库&#xff08;Library&#xff09; 是一组可复用的代码集合&#xff0c;提供特定功能&#xff08;如网络请求、UI 组件、数据处理等&#xff09;。 特点&#xff1a; 只是代码的集合&#xff0c;没有完整的应用结构…...

【AD】5-14 多跟走线设置

多跟走线 快捷键UM 先拉出线头并框选或线选&#xff08;快捷键SL&#xff09;&#xff0c;点击交互式总线布线&#xff08;快捷键UM&#xff09;&#xff0c;走线过程中CtrlB调小线间距&#xff0c;shiftB调大线间距或按TAB键直接修改...

生物电阻抗技术:精准洞察人体营养的“智能窗口”

生物电阻抗技术&#xff1a;精准洞察人体营养的“智能窗口” 引言&#xff1a;营养监测的新兴力量 在健康管理日益受到重视的今天&#xff0c;人体营养监测成为保障健康的关键环节。 传统营养评估方法往往依赖于主观问卷或侵入性检测&#xff0c;存在诸多局限性。 而生物电阻…...

国产操作系统之系统分区及分区的作用

国产操作系统之系统分区及分区的作用和挂载 Linux的系统分区跟Windows有着本质区别,在windows中大家知道c盘一般为系统盘,除c盘系统盘外,我们再分为D、E等文件存储盘,而在Linux中虽然是以文件目录著称的系统,但思路也一样的,比如针对系统分区中 /home、/var 和 /opt 等文…...

大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比

目录 1 QuickAPI 介绍 2 dbapi 介绍 3 Magic API 介绍 4 简单对比 5 总结 统一数据服务平台是一种低代码的方式&#xff0c;实现一般是通过SQL能直接生成数据API&#xff0c;同时能对产生的数据API进行全生命周期的管理&#xff0c;典型的SQL2API的实现模式。 以下是针对…...

快速理清 Attention 注意力和 Encoder, Decoder 概念

之前一直以为 Attention 和 RNN 没关系是凭空蹦出来的新概念&#xff1b;以为 Transformer, Encoder, Decoder 这几个概念是绑在一起的。并不尽然。 Encoder 和 Decoder RNN 里就有 Encoder Decoder 的概念。其中&#xff0c;encoder 接受用户输入&#xff0c;写入 hidden stat…...

爬虫案例八js逆向爬取网易音乐

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、js逆向的前期准备二、网站分析三、代码 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 爬取网易音乐 提示&#xff1a;以下是本篇…...

Sentinel 笔记

Sentinel 笔记 1 介绍 Sentinel 是阿里开源的分布式系统流量防卫组件&#xff0c;专注于 流量控制、熔断降级、系统保护。 官网&#xff1a;https://sentinelguard.io/zh-cn/index.html wiki&#xff1a;https://github.com/alibaba/Sentinel/wiki 对比同类产品&#xff1…...

使用 vxe-table 导出 excel,支持带数值、货币、图片等带格式导出

使用 vxe-table 导出 excel&#xff0c;支持带数值、货币、图片等带格式导出&#xff0c;通过官方自动的导出插件 plugin-export-xlsx 实现导出功能 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;htt…...

powershell@宝塔面板批量建站脚本@批量设置@批量部署伪静态设置

文章目录 abstract批量设置 abstract 对于需要大量建站,并且站点类型都很接近的宝塔用户,可以考虑使用如下powershell脚本进行批量建站语句生成 请根据宝塔的要求的批量建站语句格式创建脚本 例如 function Get-BatchSiteBuilderLines {<# .SYNOPSIS获取批量站点生成器的…...

基于multisim的自动干手器设计与仿真

1 设计的任务与要求 设计一个输出 5V 的直流稳压电源。用开关的闭合模拟手挡住光线的功能。用灯的亮灭模拟烘干吹风功能。 2 方案论证与选择 2.1 自动干手器的系统方案 本设计由5V直流电源、红外发射电路、红外接收电路、灯模拟电路构成。 1. 5V直流电源系统 这一部分是整…...

webflux响应式编程

webflux&webclient 尚硅谷SpringBoot响应式编程教程&#xff0c;最新springboot3入门到实战 响应式编程设计实战及SpringWebFlux源码剖析 - 拉勾 文章目录 前置知识1、Lambda2、Function3、StreamAPI中间操作&#xff1a;Intermediate Operations终止操作&#xff1a;Ter…...

关于tresos Studio(EB)的MCAL配置之GPT

概念 GPT&#xff0c;全称General Purpose Timer&#xff0c;就是个通用定时器&#xff0c;取的名字奇怪了点。定时器是一定要的&#xff0c;要么提供给BSW去使用&#xff0c;要么提供给OS去使用。 配置 General GptDeinitApi控制接口Gpt_DeInit是否启用 GptEnableDisable…...

JavaScript基础-比较运算符

在JavaScript编程中&#xff0c;比较运算符用于比较两个值&#xff0c;并返回一个布尔值&#xff08;true或false&#xff09;&#xff0c;这对于我们进行条件判断和逻辑控制至关重要。掌握这些运算符不仅有助于编写高效的代码&#xff0c;也是处理复杂逻辑的基础。本文将详细介…...

Uniapp项目运行到微信小程序、H5、APP等多个平台教程

摘要&#xff1a;Uniapp作为一款基于Vue.js的跨平台开发框架&#xff0c;支持“一次开发&#xff0c;多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台&#xff0c;并解析常见问题。 一、环境准备 在开始前&#xff0c;请确保已安装以下工具…...

《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急设备智能化升级路径与落地实践

感谢阅读本次内容分享&#xff0c;下面我将解读分析《加快应急机器人发展的指导意见》&#xff0c;喜欢的点赞支持一下呗~(日更真的很辛苦~)&#xff0c;欢迎评论区留言讨论&#xff0c;你们的发言我都会看到~ 《加快应急机器人发展的指导意见》中智能化升级的思考——传统应急…...

Java基础知识大全(含答案,面试基础)

对于初学者来说&#xff0c;掌握Java的基础知识是成为一名优秀Java开发者的第一步。而对于经验丰富的开发者&#xff0c;扎实的基础同样是继续深入学习、攻克更高难度技术的基础。因此&#xff0c;在面试和实际工作中&#xff0c;Java的基础知识不仅是评估开发者能力的标准&…...

将长上下文大语言模型研究从输入转向输出

将长上下文大语言模型研究从输入转向输出 摘要: 近年来&#xff0c;长上下文大语言模型&#xff08;LLMs&#xff09;的研发主要集中在处理更长的输入文本上&#xff0c;这使得模型在理解长篇内容时取得了显著进步。然而&#xff0c;生成长篇输出的研究却相对被忽视&#xff…...

C/C++蓝桥杯算法真题打卡(Day4)

一、P11041 [蓝桥杯 2024 省 Java B] 报数游戏 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;// 计算第 n 个满足条件的数 long long findNthNumber(long long n) {long long low 1, high 1e18; // 二分查找范围while (low < high) {lo…...

正则表达式(2)匹配规则

正则表达式的匹配规则定义了如何识别字符串中的特定模式。这些规则包括字符类匹配、元字符匹配、数量词、字符转义和分组。 字符类匹配 字符类匹配允许你指定一个字符集合&#xff0c;并匹配该集合中的任意单个字符。这是通过方括号 [] 来实现的。 简单字符类&#xff1a;[abc…...

详解动态规划算法

动态规划 一、动态规划的核心思想二、动态规划的步骤1. 定义状态&#xff08;State&#xff09;2. 确定状态转移方程&#xff08;State Transition Equation&#xff09;3. 确定边界条件&#xff08;Base Case&#xff09;4. 填表&#xff08;Table Filling&#xff09;或递归计…...

DTO 命名规范指南

在项目实践中&#xff0c;将查询对象和返回对象都使用 DTO 后缀是可以的&#xff0c;但通常有更清晰的命名规范&#xff0c;帮助区分两者的作用。 &#x1f6a8; 推荐的命名规范 请求数据&#xff08;查询参数、请求体等&#xff09; → 使用 Request / Query 后缀返回数据&a…...

C++编写Redis客户端

目录 安装redis-plus-plus库 ​编辑 编译Credis客户端 redis的通用命令使用 get/set exists del keys expire /ttl type string类型核心操作 set和get set带有超时时间 set带有NX string带有XX mset mget getrange和setrange incr和decr list类型核心操作…...

数据开发面试: 项目介绍示例

快照表 快照表&#xff08;Snapshot Table&#xff09;是数据仓库中用来存储某一时间点的数据状态的表。这种表通常包含在特定时间点上业务实体的静态数据&#xff0c;它记录了业务在某一特定时刻的“快照”视图。快照表通常用于存储那些不经常变化的数据&#xff0c;或者即使…...

记录一下Django的密码重置(忘记密码)

一. Django默认的密码重置 1.路由 # url.pyfrom django.contrib.auth import views as auth_viewsurlpatterns [# 密码重置path(password_reset/, auth_views.PasswordResetView.as_view(), namepassword_reset),# 用户输入邮箱后&#xff0c;跳转到此页面path(password_res…...