当前位置:网站首页>【开发教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸
【开发教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸
2022-07-26 16:28:00 【efans_Mike】
开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电容触摸
1相关简介
本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断。
DA14580 内部有嵌套中断向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 个中断,能够中断配置与处理异常代码。当发生一个中断请
求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有 4 个不同的可编程的优先级,NVIC 自动处理嵌套中断。对于安全关键系统,又不可屏蔽中断(NMI,Non maskable interrupt)输入。
DA14580 内部还有一个键盘控制器,可以用于延时 GPIO 信号进入的时间。可以检测所有的 I/O 口的电平变化。当监测信号时,可以产生中断(KEYBR_IRQ)。同时,另外有 5 个中断(GPIOn_IRQ)可以被 GPIO 口触发。
2硬件设计
下面的就是本次使用的触摸按键,采用的是 RH6015,中断引脚连接到我们DA14850 的 P27 脚。
图 1
RH6015 是一款内置稳压模块的单通道电容式触摸感应控制开关 IC,可以替代传统的机械式开关。当我们触摸到 RH1615 第三引脚前的触摸电容时,第一引脚会由高电平变成低电平。
3软件设计
本次软件,将完触摸一次按键,打印一次累计按键次数的现象。
整个实验代码,将使用到两个部分:串口和外部中断。关于串口的初始化配置,以及串口打印的相关函数,可以参考前面的章节,本章节只介绍外部中断的相关代码。
要使用外部中断,就需要一下几个流程:
(1)配置要使用的 IO 口。
GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 这里将 DA14580 的 P27 管脚设置为输入。
(2)注册中断回调函数。
GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler);
这个注册中断回调函数有两个参数, 第一个参数是外部中断编号, 可以填写GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二个是回调函数的指针。
(3)使能外部中断。
GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 );
完成以上 3 步之后,每当手触摸到触摸弹簧,代码就会运行到回调函数
button1_int_handler 之中。
void button1_int_handler(void)
{
static unsigned char button_count=0; button_count++;
printf_string("\r\n Number of key:"); printf_byte(button_count);
}
在中断函数 button1_int_handle ( ) 中, 首先定义了一个静态变量
button_count,用于记录按键次数,进入一次外部中断,就将变量button_count 加 1,然后答应出换行符以及字符串 Number of key:,最后就打印出 button_count 的值。
4实验现象
首先,插好 Jlink 和 USB 转串口,然后打开打开串口调试助手。
(1)选择串口号,我们图中是 COM1,这个根据实际情况选择。
(2)配置串口参数,波特率为 115200,数据位 8,停止位 1,没有校验位和控制流,与下图一致。
(3)点击打开串口。
图 2
配置完串口之后,打开我们提供的代码。
(1)点击仿真按键。
图 3
(2)点击运行代码。
图 4
完成之后,触摸一次触摸弹簧,串口调试助手就打印出一条信息,如下图所示。
图 5
边栏推荐
- 量化交易之数字货币篇 - 通过时间戳与方向来合并逐笔成交数据(大单合并)
- Guetzli simple to use
- Pat class a 1047 student list for course
- 综合设计一个OPPE主页--顶部,头部的设计
- DTS is equipped with a new self-developed kernel, which breaks through the key technology of the three center architecture of the two places Tencent cloud database
- Bugku login2
- IDEA 阿里云多模块部署
- 2022 Niuke summer multi school training camp 2 (bdghjkl)
- 2022软件测试技能 Postman+newman+jenkins 持续集成 实战教程
- 接口比较器
猜你喜欢

DTS搭载全新自研内核,突破两地三中心架构的关键技术|腾讯云数据库

TDengine 落地协鑫能科,数百亿数据压缩至 600GB

TCP 和 UDP 可以使用相同端口吗?

Re7:读论文 FLA/MLAC Learning to Predict Charges for Criminal Cases with Legal Basis

Tao and art of R & D Efficiency - Tao chapter

vscode批量删除

什么是分布式定时任务框架?

Oracle创建表分区后,查询的时候不给出partition,但是会给分区字段指定的值,会不会自动按照分区查询?

Use verdaccio to build your own NPM private library

2022 Niuke summer multi school training camp 1 (acdgij)
随机推荐
NUC 11 build esxi 7.0.3f install network card driver-v2 (upgraded version in July 2022)
Final consistency distributed transaction TCC
The difference between anonymous methods and lambda expressions
Vlang's way of beating drums
Pat grade a 1046 shortest distance
Marxan模型保护区优化与保护空缺甄选技术、InVEST生态系统中的应用
2022-2023 topic recommendation of information management graduation project
Matlab论文插图绘制模板第40期—带偏移扇区的饼图
vlang捣鼓之路
Digital currency of quantitative transactions - merge transaction by transaction data through timestamp and direction (large order consolidation)
公安部发出暑期旅游客运交通安全预警:手握方向盘 绷紧安全弦
Alibaba side: analysis of ten classic interview questions
C # method to read the text content of all files in the local folder
kubernetes之ConfigMap
研发效能的道与术 - 道篇
The difference between oncreate and onrestoreinstancestate recovery data of activity
Re7: reading papers fla/mlac learning to predict charges for critical cases with legal basis
Pat class a 1047 student list for course
srec_cat 常用参数的使用
[fluent -- advanced] packaging