开源蓝牙心率防水运动手环
——疯壳·智能穿戴开发系列
电容触摸

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

【开源教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸相关推荐

  1. 【开发教程7】疯壳·开源蓝牙心率防水运动手环-电容触摸

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 电容触摸 1相关简介      本次章节,我们将使用到 DA14580 的外部中断,通过触摸手环主板上面的小弹簧,触发中断.   DA14580 ...

  2. 【开源教程1】疯壳·开源蓝牙心率防水运动手环-开发套件简介

    开源蓝牙心率防水运动手环  --疯壳·智能穿戴开发系列 开发套件简介 为了方便编写文档教程,以及开发调试,我们拆出了一个手环硬件主板,并焊接上了 jlink 下载线以及 usb 转串口线,如下图所示( ...

  3. 【开发教程9】疯壳·开源蓝牙心率防水运动手环-心率监测

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列    心率监测 1心率测量原理简介          我们手环的心率测量, 采用的是 PPG 光电容积脉搏波描记法原理(PhotoPlethysm ...

  4. 【开发教程10】疯壳·开源蓝牙心率防水运动手环-蓝牙 BLE 收发

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 蓝牙 BLE 收发 1相关简介          DA14580 内部集成了射频模块,同时官方也提供了一套 SDK,里面包含了蓝牙协议栈部分.本节 ...

  5. 【开源教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

  6. 【开发教程11】疯壳·开源蓝牙心率防水运动手环-整机功能代码讲解

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 整机功能代码讲解 整机代码 1 软件设计    本节,我们将融合前面的蓝牙收发.三轴记步.电量检测.外部 Flash 读写. 心率检测和 Led ...

  7. 【开源教程8】疯壳·开源蓝牙心率防水运动手环-三轴计步伐

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 三轴计步伐 三轴记步     1相关简介          本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数.        ...

  8. 【开源教程10】疯壳·开源蓝牙心率防水运动手环-蓝牙 BLE 收发

    开源蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 蓝牙 BLE 收发 1相关简介          DA14580 内部集成了射频模块,同时官方也提供了一套 SDK,里面包含了蓝牙协议栈部分.本节 ...

  9. 【开发教程8】疯壳·开源蓝牙心率防水运动手环-三轴计步伐

    蓝牙心率防水运动手环 --疯壳·智能穿戴开发系列 三轴计步伐 三轴记步     1相关简介          本次,我们将使用 DA14580 的硬件 I2C 读取三轴传感器的步数.          ...

最新文章

  1. mysql 数据库名称相同吗_mysql 数据库名称相同吗
  2. .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)...
  3. 水晶报表2008部署
  4. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_2 请求参数绑定实体类型
  5. Springboot项目中Pom.xml报错
  6. 没有与这些操作数匹配的运算符_【5min+】 这些C#的运算符您都认识吗?
  7. db2 中sql 拼接字符串
  8. 华3交换机配置命令【系统归纳】【方便好查】
  9. 【“计算机科学与技术”专业小白成长系列】Peter Norvig:十年学会编程
  10. 怎么更改网络中的计算机名字,修改网络 “本地连接”的中网络名称“网络2”为其他名称...
  11. 陷入瓶颈的中国航空WiFi,还有可能赶英超美吗?
  12. ZZULIOJ:1125: 上三角矩阵的判断
  13. matlab将图片旋转的代码_论文写作经验分享word+mathtype+matlab
  14. ksps什么单位_[转载]采样频率Hz 采样率KSPS或MSPS,两种单位的换算关系
  15. IEEE-754例题
  16. 干货 | 以太坊的工作原理
  17. 什么叫做展望_展望未来的含义是什么?
  18. OpenSSL之调用EVP框架实现AES多种加密模式
  19. 51单片机系列——基于单片机的蓝牙LED摇摇棒设计
  20. FireDebug使用

热门文章

  1. 智能火焰与烟雾检测系统(Python+YOLOv5深度学习模型+清新界面)
  2. 荣耀4c android版本,荣耀4C有几个版本?华为荣耀4C畅玩版各版本区别介绍
  3. Rsync+inotify实现实时同步
  4. kubernetes——存储之Volumes配置管理
  5. 今天,你的微信铃声是什么?
  6. lol峡谷之巅区服务器位置,LOL峡谷之巅专区申请地址一览 峡谷之巅介绍
  7. GomTV版MV介绍
  8. vue3知识点:provide 与 inject
  9. 第5章 uniapp开发ImoocBlog
  10. 关于启动eclipse报return code=1的错误的问题解决