刚发现nRF52832有一个 QDEC,SDK13.0中还有驱动,但是不太友好。  如果大家有废旧鼠标,建议拆一个编码器下来“学习”。鼠标的一般原理如下:

图一

图中那个SW4 ALPS EC10E / Scroll wheel encoder 便是编码器了, 拆下来之后,还是按照这个电路连接到NRF52832,这里我选择依照原版程序,使用P03 P04,方向不重要。我找了一个接上之后,还先用示波器看了一下,QA/QB输出正常。

图二

图三

代码有一点变化,仍然使用PCA10040来运行。

//---------------------代码开始---------------------------------------------

static volatile uint32_t m_accdblread;

static volatile int32_t m_accread;

static volatile bool m_report_ready_flag = false;

#if (QDEC_CONFIG_LEDPRE >= 128)

#warning "This example assumes that the QDEC LED changes state. Make sure that 'Sample Period' in QDEC config is less than 'LED pre-time'."

#endif

#define NRF_DRV_QDEC_COCO_CONFIG                                         \

{                                                                       \

.reportper          = (nrf_qdec_reportper_t)QDEC_CONFIG_REPORTPER,  \

.sampleper          = (nrf_qdec_sampleper_t)0,  \

.psela              = QDEC_CONFIG_PIO_A,                            \

.pselb              = QDEC_CONFIG_PIO_B,                            \

.pselled            = 0xFFFFFFFF,                          \

.ledpre             = QDEC_CONFIG_LEDPRE,                           \

.ledpol             = (nrf_qdec_ledpol_t)QDEC_CONFIG_LEDPOL,        \

.interrupt_priority = QDEC_CONFIG_IRQ_PRIORITY,                     \

.dbfen              = 0,                            \

.sample_inten       = 0                      \

}

static const nrf_drv_qdec_config_t m_qdec_coco_config = NRF_DRV_QDEC_COCO_CONFIG;

//static const nrf_drv_qdec_config_t m_default_config = NRF_DRV_QDEC_DEFAULT_CONFIG;

static void qdec_event_handler(nrf_drv_qdec_event_t event)

{

if (event.type == NRF_QDEC_EVENT_REPORTRDY)

{

m_accdblread        = event.data.report.accdbl;

m_accread           = event.data.report.acc;

}

else if ( event.type == NRF_QDEC_EVENT_SAMPLERDY )

{

}

}

int main(void)

{

uint32_t err_code;

uint32_t v_accread = 0;

err_code = NRF_LOG_INIT(NULL);

APP_ERROR_CHECK(err_code);

NRF_LOG_DEFAULT_BACKENDS_INIT();

// Initialize hardware

err_code = nrf_drv_qdec_init(&m_qdec_coco_config, qdec_event_handler);

APP_ERROR_CHECK(err_code);

nrf_qdec_reportper_to_value(QDEC_CONFIG_REPORTPER);

// Initialize quadrature encoder simulator

qenc_init((nrf_qdec_ledpol_t)nrf_qdec_ledpol_get());

NRF_LOG_INFO("QDEC testing started");

nrf_drv_qdec_enable();

while (true)

{

if ( m_report_ready_flag )

{

m_report_ready_flag = 0;

v_accread += m_accread;

NRF_LOG_INFO("ACC IS %d \n", v_accread);

NRF_LOG_FLUSH();

}

}

}

//---------------------代码结束---------------------------------------------

废旧鼠标先别丢,用来学习nRF52832 的QDEC的更多相关文章

  1. 11种常用css样式之鼠标、列表和尺寸样式学习

    鼠标cursor常见样式crosshair;/*十字形状*/cursor:pointer;/*小手形状*/cursor:wait;/*等待形状*/cursor:text;/*默认 文本形状*/curs ...

  2. 鼠标捕获(setCapture,releaseCapture)的学习

    鼠标捕获(setCapture)作用是将鼠标事件捕获到当前文档的指定的对象——对指定的对象设置鼠标捕获.这个对象会为当前应用程序或整个系统接收所有鼠标事件. 所谓鼠标捕获,是指对鼠标事件(onmous ...

  3. ubuntu鼠标和触摸板的禁用

    ubuntu鼠标和触摸板的禁用 学习了:http://www.2cto.com/os/201308/239403.html 在终端下直接执行以下命令来打开或关闭触摸板. sudo modprobe - ...

  4. 拿到这份 Java、C++ 软件开发完整学习路线图,我面试再也没挂过..

    大家好,我是柠檬. 柠檬哥作为一个普通大学.非计算机专业,自学后端技术进入腾讯做后端开发工作,我自己也是非科班自学计算机成功转行软件开发(有想听柠檬哥转行之路经历的吗,可以留言告诉我,人多就写写),体 ...

  5. Java学习(十三)

    今天学习了Java中的继承,Java的继承和c++的差别很大. 继承的基本作用是代码复用,但最重要的作用是为了以后的"方法覆盖"和"多态机制". 继承的语法是: ...

  6. 基于python的互联网软件测试开发(自动化测试)-全集合

    基于python的互联网软件测试开发(自动化测试)-全集合 1   关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,a ...

  7. 超全面!这可能是最全面的 jQuery 知识总结

    个人建议:学习 jQuery 前先掌握基本的 JavaScrpit 语法,特别是对函数要掌握,jQuery 基本上是使用函数. jQuery 简介 jQuery 是一个轻量级 JavaScript 库 ...

  8. [OpenCV-Python] OpenCV 中的 Gui特性 部分 II

    部分 IIOpenCV 中的 Gui 特性 OpenCV-Python 中文教程(搬运)目录 4 图片 目标 • 在这里你将学会怎样读入一幅图像,怎样显示一幅图像,以及如何保存一幅图像 • 你将要学习 ...

  9. IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)

    一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...

随机推荐

  1. vue 回到顶部的小问题

    今天在用vue项目中,实现回到顶部功能的时候,我写了一个backTop组件,接下来需要通过监听window.scroll事件来控制这个组件显示隐藏 因为可能会有其他的组件会用到这样的逻辑,所以将此功能 ...

  2. 解决mysql漏洞 Oracle MySQL Server远程安全漏洞(CVE-2015-0411)

    有时候会检测到服务器有很多漏洞,而大部分漏洞都是由于服务的版本过低的原因,因为官网出现漏洞就会发布新版本来修复这个漏洞,所以一般情况下,我们只需要对相应的软件包进行升级到安全版本即可. 通过查阅官网信 ...

  3. [经验分享]WebAPI中返回类型JsonMessage的应用

    这是一个绝无仅有的好类型,一个你爱不释手的好类型,好了,不扯了,直接上干货. 相信大家都知道,在调用接口的时候返回Json数据已经成为一种不成文的标准,因为它的解析快,易读等优秀的特性,所以被绝大多数 ...

  4. JS中事件绑定的三种方式

    以下是搜集的在JS中事件绑定的三种方式.   1. HTML onclick attribute     <button type="button" id="upl ...

  5. Python中range()和len()

  6. PS字体倾斜、变形

    整体效果: 学习地址:http://www.wzsky.net/html/Photo/psjc/psc/125890_1.html 第一步新建画布,这个大家必须会,输入文字"基"基 ...

  7. arm-linux-objdump反汇编使用指南

    一.   arm-linux-objdump常用来显示二进制文件信息,常用来查看反汇编代码 二.   常用选项: 1.-b bfdname 指定目标码格式 2.-disassemble或者-d 反汇编 ...

  8. 一种优雅的条件引用第三方.net库的方法

    1.遇到的问题 今年我一直在开发一个WebApiClient库,旨在.net下能像java的retrofit一样,方便地请求服务端的http接口.在这restful api盛行的年代,json的身影无 ...

  9. VS代码生成工具ReSharper使用手册:配置快捷键(转)

    原文:http://blog.csdn.net/fhzh520/article/details/46364603 VS代码生成工具ReSharper提供了丰富的快捷键,可以极大地提高你的开发效率. 配 ...

  10. Robot Framework学习笔记(九)------创建资源和用户关键字

    一.测试套件下创建用户关键字 1.创建关键字测试套件右击->点击new user keyword,然后输入name,点击OK保存. 2.在用户关键字的edit点击settings,然后输入Arg ...