废旧鼠标先别丢,用来学习nRF52832 的QDEC
刚发现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的更多相关文章
- 11种常用css样式之鼠标、列表和尺寸样式学习
鼠标cursor常见样式crosshair;/*十字形状*/cursor:pointer;/*小手形状*/cursor:wait;/*等待形状*/cursor:text;/*默认 文本形状*/curs ...
- 鼠标捕获(setCapture,releaseCapture)的学习
鼠标捕获(setCapture)作用是将鼠标事件捕获到当前文档的指定的对象——对指定的对象设置鼠标捕获.这个对象会为当前应用程序或整个系统接收所有鼠标事件. 所谓鼠标捕获,是指对鼠标事件(onmous ...
- ubuntu鼠标和触摸板的禁用
ubuntu鼠标和触摸板的禁用 学习了:http://www.2cto.com/os/201308/239403.html 在终端下直接执行以下命令来打开或关闭触摸板. sudo modprobe - ...
- 拿到这份 Java、C++ 软件开发完整学习路线图,我面试再也没挂过..
大家好,我是柠檬. 柠檬哥作为一个普通大学.非计算机专业,自学后端技术进入腾讯做后端开发工作,我自己也是非科班自学计算机成功转行软件开发(有想听柠檬哥转行之路经历的吗,可以留言告诉我,人多就写写),体 ...
- Java学习(十三)
今天学习了Java中的继承,Java的继承和c++的差别很大. 继承的基本作用是代码复用,但最重要的作用是为了以后的"方法覆盖"和"多态机制". 继承的语法是: ...
- 基于python的互联网软件测试开发(自动化测试)-全集合
基于python的互联网软件测试开发(自动化测试)-全集合 1 关键字 为了便于搜索引擎收录本文,特别将本文的关键字给强调一下: python,互联网,自动化测试,测试开发,接口测试,服务测试,a ...
- 超全面!这可能是最全面的 jQuery 知识总结
个人建议:学习 jQuery 前先掌握基本的 JavaScrpit 语法,特别是对函数要掌握,jQuery 基本上是使用函数. jQuery 简介 jQuery 是一个轻量级 JavaScript 库 ...
- [OpenCV-Python] OpenCV 中的 Gui特性 部分 II
部分 IIOpenCV 中的 Gui 特性 OpenCV-Python 中文教程(搬运)目录 4 图片 目标 • 在这里你将学会怎样读入一幅图像,怎样显示一幅图像,以及如何保存一幅图像 • 你将要学习 ...
- IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)
一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...
随机推荐
- MVC 框架
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...
- Concurrency Is Not Parallelism (Rob pike)
Rob pike发表过一个有名的演讲<Concurrency is not parallelism>(https://blog.golang.org/concurrency-is-not- ...
- 一、源代码-面向CLR的编译器-托管模块-(元数据&IL代码)
本文脉络图如下: 1.CLR(Common Language Runtime)公共语言运行时简介 (1).公共语言运行时是一种可由多种编程语言一起使用的"运行时". (2).CLR ...
- centos7 部署dns服务器
=============================================== 2017/12/6_第2次修改 ccb_warlock 20 ...
- 豹哥嵌入式讲堂:ARM开发之文件详解(2)- linker文件
大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的linker文件. 在前一节课source文件详解里,豹哥给大家系统地介绍了source文件,source文件是嵌入式工程里典 ...
- 几个关于js数组方法reduce的经典片段
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
- Webpack 2 视频教程 018 - 使用可视化图表进行统计分析打包过程
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- C语言学生管理系统(增进版)
在原版上进行改进,主要改进的功能有. 1.利用atof:将字符串转换为浮点型: 利用atoi:将字符串转换为整型: 原文地址:http://www.cnblogs.com/sddai/p/577412 ...
- mysql优化-》查询缓存
使用MySql查询缓存(query_cache_size) 在MySql中查询缓存的原理: 其实是MySql创建了一个临时的空间叫Qcache(这个空间生成在MySql的编译器内存中),这个空间的大小 ...
- vue-父子组件嵌套的示例
组件注册: // 注册组件 Vue.component('my-component', { template: '<div>A custom component!</div>' ...