刚发现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. 1-MySQL数据库(android连接MySQL数据库)

    很好的链接 http://www.cnblogs.com/best/p/6517755.html  一个小时学会MySQL数据库 http://www.cnblogs.com/klguang/p/47 ...

  2. lesson - 11 正则表达式

    正则就是有一定规律的字符串,有几个特殊符号很关键(. * + ? | ),我们平时不仅可以用命令行工具grep/sed/awk去引用正则,而且还可以把正则嵌入在nginx.apache.甚至php.p ...

  3. find 命令的误差估值与单位调整

    一.命令简介 find 命令的 -size 参数 单位b(不是byte而是block).c.w.k.M.G.默认是单位b ,也就是1block = 512byte = 0.5kb (文件系统ext4) ...

  4. HBase资料

    http://blog.csdn.net/ymh198816/article/details/51244911 https://www.cnblogs.com/JingJ/p/4521245.html ...

  5. c# 调用python语言

    config   文件配置 <configuration>节中 第一个的位置插入如下节点,版本根据实际用到的来写 <configSections>    <section ...

  6. 房上的猫:JavaDoc注释

    //这是一个注释 /*   *这是一个演示程序   */ /**    *@这是JavaDoc注释.   */ JavaDoc注释 背景: javadoc是Sun公司提供的一个技术,它从程序源代码中抽 ...

  7. Vue 爬坑之路(三)—— 使用 vue-router 跳转页面

    使用 Vue.js 做项目的时候,一个页面是由多个组件构成的,所以在跳转页面的时候,并不适合用传统的 href,于是 vue-router 应运而生. 官方文档: https://router.vue ...

  8. celery出现警告或异常的解决方式

    做个笔记,记录下使用celery踩过的坑,不定期更新.  warnings.warn(CDeprecationWarning(W_PICKLE_DEPRECATED)) 我用的是Flask,所以在Fl ...

  9. Hibernate学习笔记(2)---hibernate核心文件

    配置hibernate.cfg.xml hibernate配置文件包含连接持久层与映射文件所需的基本信息.配置文件名默认为hibernate.cfg.xml. hibernate.cfg.xml文件配 ...

  10. Redis学习笔记(一)关于在windows64位环境下的安装学习使用

    前言 由于工作需要,目前我正在学习使用Redis.我当时学习Redis就从网上下载了点资料就开始学习了.入门看的是<REDIS入门指南>,这本书个人觉得很适合新手用来学习接触.根据书上的引 ...