1 基于J-Link的调试信息输出( 八 )


添加文件
在工程目录下添加 accel.h; accel.c 两个文件和文件夹 , 这些文件可以直接从我的源码中复制过来 。
其中文件夹内是ST提供的的驱动代码(这个驱动库让我们不必麻烦的操作的寄存器 , 而是通过调用函数的方式来配置使用) , 但是我在里边增加了以下两个函数
//Activity/Inactivity recognition Functionsstatus_t LIS3DH_SetActivThreshold(u8_t ths);status_t LIS3DH_SetActivDuration(u8_t dur);
来使用活动检测功能 , 这个功能可以让芯片在持续一段时间内加速度值小于活动阈值时自动进入低功耗模式 。
然后就是 accel.h; accel.c 两个文件 , 这两个文件是对驱动的应用 。
修改main.c
打开main.c文件将代码修改为如下代码
#include "nrf_delay.h"#include "nrf_log.h"#include "nrf_log_ctrl.h"#include "nrf_log_default_backends.h"#include "accel.h"/*** @brief Function for application main entry.*/int main(void){int32_t ret;NRF_LOG_INIT(NULL);NRF_LOG_DEFAULT_BACKENDS_INIT();ret = ACCEL_init();if(ret != 0){NRF_LOG_ERROR("ACCEL_init fail %d", ret);}else{NRF_LOG_INFO("ACCEL_init ok");}bool isActiv = false;while (true){ACCEL_loop();if(ACCEL_is_activ()){if(!isActiv){isActiv = true;NRF_LOG_INFO("Activ");}}else{if(isActiv){isActiv = false;NRF_LOG_INFO("Inactiv");}}}}
程序中我们把的两个可编程中断引脚进行如下配置:
程序开始运行后首先初始化我们的 , 然后在主循环中执行函数 , 同时通过读取INT1来检测当前的活动状态并通过RTT输出 。
【1 基于J-Link的调试信息输出】在函数中通过读取INT2来确定当前是否有新的加速度数据产生 , 如果有则出发TWI读取事件 , TWI会异步的读取的三轴加速度输出寄存器 , 当读取完成后会调用accel.c文件中的函数 , 在函数中会通过RTT打印输出读取到的加速度值 。输出数据的频率就是我们在配置时配置的200Hz , 但是当芯片检测到非活动状态时会自动进入低功耗模式 , 此时输出数据的频率会降为固定的10Hz , 这些策略可以在的数据手册和应用手册中看到 。