首先感谢网上朋友们的分享,我也贴出自己的源码,开源互助!

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 中断功能相关推荐

  1. 利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序

    利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序 1.利用定时器完成线阵CCDILX554B的驱动时序,采用两个管脚1个用于产生ROG信号,一个用于产生CLK信号 2.使用一个 ...

  2. stm32入门——定时器中断和中断优先级简介

    stm32入门--定时器中断 产生定时中断是定时器的用法之一,与定时器用来进行PWM输出和输入捕获相比,定时器中断更容易理解.掌握. 原理简介 使用通用定时器进行中断的原理,其实和开发板Systick ...

  3. 深入浅出地理解STM32中的中断系统——从原理到简单工程示例——保姆级教程

    深入浅出地理解STM32中的中断系统 一.什么是中断?什么是异常? 二.如何管理中断? 三.NVIC 1 NVIC 特点 2 中断优先级 (1) 优先级分组 3 中断向量表 4 中断服务函数 (1)中 ...

  4. stm32学习笔记-中断系统

    文章目录 问题引入 1.中断系统概述. 1.1 为什么要中断(中断意义) 中断和轮询比较: 1.2 中断处理过程 1.3 中断笔试题 1.4 中断服务函数 2.STM32中断的体系结构. 2.1 结构 ...

  5. 初学STM32之定时器中断

    初学STM32之定时器中断 一.定时器概述 1.定时器的分类 STM32F10x系列总共最多有8个定时器分为高级定时器,通用定时器和基本定时器.三种定时器的主要区别如下图所示: 本文章仅介绍通用定时器 ...

  6. stm32 hal串口中断分析

    stm32 hal串口中断分析 startup_stm32f103xe.s(115) :                 DCD     USART1_IRQHandler        USART1 ...

  7. STM32实现USB转串口功能(含源码)

    之前的文章中介绍过STM32的USB接口虚拟串口的功能.<STM32CubeMX之USB从机>.本篇文章在此基础上,以STM32F407为例,介绍USB转串口功能的实现. 要实现USB转串 ...

  8. STM32 TIM定时中断

    总体介绍 TIM(Timer)定时器是STM32中功能最强大,结构最复杂的一个外设,以下对其做一下简介(以stm32为例): TIM可以对输入的时钟进行计数,并在数值达到设定值时触发中断. 在STM3 ...

  9. STM32的“外部中断”和“事件”区别和理解

    凡从事过ST MCU应用开发的人往往会遇到事件.中断事件 中断三个概念或术语.这三个概念彼此关联,有时会让人有点混淆或犯迷糊. 先拿一件生活中的事情打比方对上述三个概念做个基本的粗略理解,之后再分享一 ...

  10. 基于STM32与ATT7022E多功能电力监测仪设计

    本设计是基于STM32与ATT7022E多功能电力监测仪的电路方案设计 程序编译器:keil 5 编程语言:C语言 [腾讯文档]C0016 网盘链接 近年来随着我国国民经济的高速发展,先进嵌入式处理器 ...

最新文章

  1. java前台传多个id用什么接收_前端js传多个id 到java后台的处理方式
  2. 网络连接错误 failed to handler mux client connection
  3. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
  4. AUTOSAR从入门到精通番外篇(二)-一文读懂ld链接脚本文件
  5. java 写 gz_java简写名词解释 - osc_gzyujipq的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数
  7. centos 使用yum 安装出现 File contains no section headers 错误解决方法
  8. 奥维地图数据格式_奥维地图导入文件显示 奥维地图支持什么格式文件
  9. eXeScope的应用
  10. 计算机应用助手工程师,通信工程师备考助手
  11. 无源微波器件--耦合线定向耦合器
  12. 坦克类游戏的制作之路
  13. Python 文件,文件读取一行(readline)
  14. COSELF 次元秀场伦敦时装周预告 #虚拟时尚
  15. HACK RF学习之旅记录1——填坑历程
  16. echarts 折现图和柱状图 样式修改 设置折线样式 背景(文末附带完整代码)
  17. 空间注意力和通道注意力机制
  18. 高频电路相关知识(五)
  19. javax.net.ssl.SSLException: closing inbound before receiving peer‘s close_notify
  20. SQLServer2005安装AdventureWorks数据库

热门文章

  1. 编写程序求解百鸡百钱问题。公鸡5元一只,母鸡3元一只,小鸡一元3只,问100元钱买100只鸡,可买公鸡、母鸡、小鸡各多少只?
  2. Qt5之图形视图框架(一)
  3. 微信小程序搜索wifi列表
  4. AI提取图片里包含的文字信息-解决文字无法复制的痛点
  5. Mac Mini - 一个深坑
  6. 新疆旅游攻略-禾木村
  7. Spring 事务源码(7)—事务的completeTransactionAfterThrowing回滚、commitTransactionAfterReturning提交以及事务源码总结【一万字】
  8. Android 系统(93)---android 怎么判断手机号是移动还是联通还是电信
  9. OpenGL函数思考-glHint
  10. vivo平台sdk php说明书,vivo