本文介绍了利用ADXL345中断唤醒停止模式下的STM32F103C8T6,为进一步开发计步器做准备。
从上位机串口通讯记录了整个过程, 代码中有关OLED显示屏可以不接。
1. ADXL345寄存器, 有好多,为了观察明显,这里设置了ACTIVITY和INACTIVITY模式,都能触发INT2:(ADXL345.c)
Single_Write_ADXL345(THRESH_ACT,0x20); //检测活动的阈值为2g时产生中断,认为是开始活动了
Single_Write_ADXL345(THRESH_INACT,0x01); //0.1875g,小于它,就认为是不活动
Single_Write_ADXL345(TIME_INACT,0x02); //不活动2秒,就认为是不活动中断触发
Single_Write_ADXL345(ACT_INACT_CTL,0xEE); //使能X、Y、Z三轴的Activity和Inactivity功能
Single_Write_ADXL345(INT_MAP,0x18); //00011000, Activity和Inactivity 活动都映射到INT2 Single_Write_ADXL345(INT_ENABLE,0x18); //80 DATA_READY中断开启, 10 Activity 08 inactivity
2. 观察中断是哪个活动触发的:访问寄存器:INT_SOURCE (main.c)
printf("\r\n INT_SOURCE: 0X30= %lX After Read\r\n", Single_Read_ADXL345(0X30)); //INT_SOURCE
读两遍INT_SOURCE (0X30)可以得到
INT_SOURCE: 0X30= 93 After Read 93=10010011,从右到左第1位是OVERRUN,第2位是Watermark,第5位是ACTIVITY,第8位是DATA_READY
INT_SOURCE: 0X30= 83 After Read 83=10000011,可以看到本次中断是由ACTIVITY触发的,其它三个标志位不用管它
STM32+ADXL计步器(中断唤醒+串口调试)
最新推荐文章于 2025-05-12 09:49:45 发布
本文通过STM32F103C8T6和ADXL345传感器,实现计步器功能。利用ADXL345中断唤醒停机模式,通过串口记录中断源和数据,中断由ACTIVITY触发,主循环读取数据计算步数。

最低0.47元/天 解锁文章
569

被折叠的 条评论
为什么被折叠?



