STM32读写ADXL345 中断功能
首先感谢网上朋友们的分享,我也贴出自己的源码,开源互助!
1、配置:PC8和PC9外部中断,上升沿触发;
#define BW_RATE 0x2C //数据速率和功率模式控制
#define POWER_CTL 0x2D //省电功能控制
#define DATA_FORMAT 0x31 //数据格式控制
#define INT_ENABLE 0x2E //中断使能控制
#define FIFO_CTL 0x38 //FIFO控制
#define THRESH_ACT 0x24 //活动阈值
#define THRESH_INACT 0x25 //静止阈值
#define TIME_INACT 0x26 //静止时间
#define ACT_INACT_CTL 0x27 //轴使能控制活动和静止检测
#define INT_MAP 0x2F //中断引脚映射控制
#define OFSX 0x1E //X轴偏移
#define OFSY 0x1F //Y轴偏移
#define OFSZ 0x20 //Z轴偏移
//中断配置
ADXL345_WriteByte(INT_ENABLE , 0x00); delay345_ms(200); //关闭中断
ADXL345_WriteByte(DATA_FORMAT , 0x0B); delay345_ms(200); //测量范围:中断上升沿,正负±16 g , 右对齐 ,全分辨率模式13位分辨率
ADXL345_WriteByte(BW_RATE , 0x1A); delay345_ms(200); //正常功率:低功耗操作,100Hz输出 ,频率 1hz
ADXL345_WriteByte(POWER_CTL , 0x18); delay345_ms(200); //测量模式 ,自动睡眠
ADXL345_WriteByte(OFSX , 0x00); delay345_ms(200); //X轴偏移
ADXL345_WriteByte(OFSY , 0x00); delay345_ms(200); //Y轴偏移
ADXL345_WriteByte(OFSZ , 0x00); delay345_ms(200); //Z轴偏移
ADXL345_WriteByte(THRESH_ACT,0x20); delay345_ms(200); //活动阈值,激活睡眠activity阈值,大于时触发中断,2 - 2g (不能设置为零)
ADXL345_WriteByte(THRESH_INACT,0x0F); delay345_ms(200); //静止阈值,睡眠开始阈值,最小值,09 - 0.9g (不能设置为零)
ADXL345_WriteByte(TIME_INACT,0x0F); delay345_ms(200); //静止时间,小于THRESH_INACT值宣布静止,进入睡眠,02 - 2秒 (不能设置为零)
ADXL345_WriteByte(ACT_INACT_CTL,0xFF); delay345_ms(200); //直流交流触发配置,XYZ使能触发配置,此处选XYZ交流
ADXL345_WriteByte(INT_MAP,0x00); delay345_ms(200); //中断引脚映射控制,打开活动中断引脚到 INT1 引脚上
// ADXL345_WriteByte(INT_MAP,0x10); delay345_ms(200); //中断引脚映射控制,打开活动中断引脚到 INT2 引脚上
ADXL345_WriteByte(INT_ENABLE,0x10); delay345_ms(200); //开活动 中断
//**************中断回调函数读取数据********
uint8_t re_value =0;
uint8_t re_value =0;
if(HAL_GPIO_ReadPin(ADXL345_INT1_GPIO_Port, ADXL345_INT1_Pin) == GPIO_PIN_SET)
{
re_value = ADXL345_ReadByte(0x30); //最好在 读取数据函数后,在读一次0x30,否则ADXL345不会产生中断
printf("\n ADXL345 1: %x \n",re_value);
}
三、经过测试ADXL345读取时间过快会出现错误,不过增加读取时间可以避免此问题,应该是配置问题,如有解决的大神希望留言,谢谢!
四、普通连续读取模式:
//普通配置
ADXL345_WriteByte(DATA_FORMAT , 0x2B); delay345_ms(200); //测量范围:正负±16 g , 右对齐 ,全分辨率模式13位分辨率
ADXL345_WriteByte(BW_RATE , 0x0A); delay345_ms(200); //正常功率 50Hz输出 带宽25Hz
ADXL345_WriteByte(POWER_CTL , 0x08); delay345_ms(200); //测量模式 ,不会自动睡眠
ADXL345_WriteByte(INT_ENABLE , 0x00); delay345_ms(200); //关闭中断
ADXL345_WriteByte(OFSX , 0x00); delay345_ms(200); //X轴偏移
ADXL345_WriteByte(OFSY , 0x00); delay345_ms(200); //Y轴偏移
ADXL345_WriteByte(OFSZ , 0x00); delay345_ms(200); //Z轴偏移
STM32读写ADXL345 中断功能相关推荐
- 利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序
利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序 1.利用定时器完成线阵CCDILX554B的驱动时序,采用两个管脚1个用于产生ROG信号,一个用于产生CLK信号 2.使用一个 ...
- stm32入门——定时器中断和中断优先级简介
stm32入门--定时器中断 产生定时中断是定时器的用法之一,与定时器用来进行PWM输出和输入捕获相比,定时器中断更容易理解.掌握. 原理简介 使用通用定时器进行中断的原理,其实和开发板Systick ...
- 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程
深入浅出地理解STM32中的中断系统 一.什么是中断?什么是异常? 二.如何管理中断? 三.NVIC 1 NVIC 特点 2 中断优先级 (1) 优先级分组 3 中断向量表 4 中断服务函数 (1)中 ...
- stm32学习笔记-中断系统
文章目录 问题引入 1.中断系统概述. 1.1 为什么要中断(中断意义) 中断和轮询比较: 1.2 中断处理过程 1.3 中断笔试题 1.4 中断服务函数 2.STM32中断的体系结构. 2.1 结构 ...
- 初学STM32之定时器中断
初学STM32之定时器中断 一.定时器概述 1.定时器的分类 STM32F10x系列总共最多有8个定时器分为高级定时器,通用定时器和基本定时器.三种定时器的主要区别如下图所示: 本文章仅介绍通用定时器 ...
- stm32 hal串口中断分析
stm32 hal串口中断分析 startup_stm32f103xe.s(115) : DCD USART1_IRQHandler USART1 ...
- STM32实现USB转串口功能(含源码)
之前的文章中介绍过STM32的USB接口虚拟串口的功能.<STM32CubeMX之USB从机>.本篇文章在此基础上,以STM32F407为例,介绍USB转串口功能的实现. 要实现USB转串 ...
- STM32 TIM定时中断
总体介绍 TIM(Timer)定时器是STM32中功能最强大,结构最复杂的一个外设,以下对其做一下简介(以stm32为例): TIM可以对输入的时钟进行计数,并在数值达到设定值时触发中断. 在STM3 ...
- STM32的“外部中断”和“事件”区别和理解
凡从事过ST MCU应用开发的人往往会遇到事件.中断事件 中断三个概念或术语.这三个概念彼此关联,有时会让人有点混淆或犯迷糊. 先拿一件生活中的事情打比方对上述三个概念做个基本的粗略理解,之后再分享一 ...
- 基于STM32与ATT7022E多功能电力监测仪设计
本设计是基于STM32与ATT7022E多功能电力监测仪的电路方案设计 程序编译器:keil 5 编程语言:C语言 [腾讯文档]C0016 网盘链接 近年来随着我国国民经济的高速发展,先进嵌入式处理器 ...
最新文章
- java前台传多个id用什么接收_前端js传多个id 到java后台的处理方式
- 网络连接错误 failed to handler mux client connection
- MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
- AUTOSAR从入门到精通番外篇(二)-一文读懂ld链接脚本文件
- java 写 gz_java简写名词解释 - osc_gzyujipq的个人空间 - OSCHINA - 中文开源技术交流社区...
- set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数
- centos 使用yum 安装出现 File contains no section headers 错误解决方法
- 奥维地图数据格式_奥维地图导入文件显示 奥维地图支持什么格式文件
- eXeScope的应用
- 计算机应用助手工程师,通信工程师备考助手
- 无源微波器件--耦合线定向耦合器
- 坦克类游戏的制作之路
- Python 文件,文件读取一行(readline)
- COSELF 次元秀场伦敦时装周预告 #虚拟时尚
- HACK RF学习之旅记录1——填坑历程
- echarts 折现图和柱状图 样式修改 设置折线样式 背景(文末附带完整代码)
- 空间注意力和通道注意力机制
- 高频电路相关知识(五)
- javax.net.ssl.SSLException: closing inbound before receiving peer‘s close_notify
- SQLServer2005安装AdventureWorks数据库
热门文章
- 编写程序求解百鸡百钱问题。公鸡5元一只,母鸡3元一只,小鸡一元3只,问100元钱买100只鸡,可买公鸡、母鸡、小鸡各多少只?
- Qt5之图形视图框架(一)
- 微信小程序搜索wifi列表
- AI提取图片里包含的文字信息-解决文字无法复制的痛点
- Mac Mini - 一个深坑
- 新疆旅游攻略-禾木村
- Spring 事务源码(7)—事务的completeTransactionAfterThrowing回滚、commitTransactionAfterReturning提交以及事务源码总结【一万字】
- Android 系统(93)---android 怎么判断手机号是移动还是联通还是电信
- OpenGL函数思考-glHint
- vivo平台sdk php说明书,vivo