一、前期准备
单片机:STM32F407VET6
开发环境:MDK5.27
库函数:STM32Cube FW_F4 V1.25.0
触摸键模块:淘宝有售

二、实验效果

三、驱动原理
参考TTP229-BSF数据手册。注意功能选择可能对程序的适配有直接的影响。
驱动参考:触摸按键参考博客,在此感谢这位博主,给了我很大的启发

需要完整工程或者有问题的请加QQ:1002521871

四、驱动代码
touch.h

#ifndef __TOUCH_H__
#define __TOUCH_H__
#include "stm32f4xx_hal.h"
#include "gpio.h"
#include "delay.h"#define SDA_IN()    {GPIOC->MODER &= ~(3 << (10*2)); GPIOC->MODER |= (0 << (10*2));}
#define SDA_OUT()   {GPIOC->MODER &= ~(3 << (10*2)); GPIOC->MODER |= (1 << (10*2));}#define TTP_SCL     PCout(11)
#define TTP_SDO     PCout(10)
#define TTP_SDI     PCin(10)extern uint16_t Touch_Read(void);
extern void Touch_Configuration(void);
extern uint8_t Touch_KeyScan(void);
#endif

touch.c

#include "touch.h"void Touch_Configuration(void)
{SDA_OUT();TTP_SDO = 1;TTP_SCL = 1;Touch_Read();
}uint16_t Touch_Read(void)
{uint8_t i = 0; uint16_t real_Value = 0;SDA_OUT();TTP_SDO = 0;DelayUs(93);TTP_SDO = 1;DelayUs(20);SDA_IN();//DelayUs(20);for (i = 0; i < 16; i ++){TTP_SCL = 1;DelayUs(100);TTP_SCL = 0;if (TTP_SDI == 1){real_Value |= (1 << i);}DelayUs(100);}HAL_Delay(2);return real_Value;
}uint16_t Previous = 0;
uint16_t Current = 0;
uint8_t Touch_KeyScan(void)
{uint8_t key = 0;Current = Touch_Read();if ((Current & 0x0001) && !(Previous & 0x0001)){key = 1;}if ((Current & 0x0002) && !(Previous & 0x0002)){key = 2;}if ((Current & 0x0004) && !(Previous & 0x0004)){key = 3;}if ((Current & 0x0008) && !(Previous & 0x0008)){key = 4;}if ((Current & 0x0010) && !(Previous & 0x0010)){key = 5;}if ((Current & 0x0020) && !(Previous & 0x0020)){key = 6;}if ((Current & 0x0040) && !(Previous & 0x0040)){key = 7;}if ((Current & 0x0080) && !(Previous & 0x0080)){key = 8;}if ((Current & 0x0100) && !(Previous & 0x0100)){key = 9;}if ((Current & 0x0200) && !(Previous & 0x0200)){key = 10;}if ((Current & 0x0400) && !(Previous & 0x0400)){key = 11;}if ((Current & 0x0800) && !(Previous & 0x0800)){key = 12;}if ((Current & 0x1000) && !(Previous & 0x1000)){key = 13;}if ((Current & 0x2000) && !(Previous & 0x2000)){key = 14;}if ((Current & 0x4000) && !(Previous & 0x4000)){key = 15;}if ((Current & 0x8000) && !(Previous & 0x8000)){key = 16;}Previous = Current;return key;
}

由于作者能力有限,有不妥之处欢迎指正,邮箱alex_hua@foxmail.com

触摸键盘驱动(STM32,TTP229-B)相关推荐

  1. 笔记本触摸键盘驱动自动禁用_如何为iPad的蓝牙键盘禁用自动更正

    笔记本触摸键盘驱动自动禁用 The take-for-granted features we enjoy when using an on-screen keyboard-like auto-corr ...

  2. 解决触摸板synatipics与键盘驱动相冲突问题——win8.1

    本人大学生一枚,放假前将windows升级为8.1,回家之后发现触摸板不好用了,于是去acer官网下载相对应的触摸板驱动(本人acer屌丝笔记本)synatipics. 安装之后重启,却发现键盘不能输 ...

  3. ESP32 开发笔记(三)源码示例 24_XPT2046_Touch_Test 电阻触摸XPT2046驱动测试触摸校正

    开发板购买链接 https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=62636 ...

  4. 联想平板电脑win10如何取消触摸键盘按键声音

    女朋友买了联想平板,使用的是触摸键盘,奈何每次输入都会震动,在办公室很影响别人,于是-在google找到了如下的办法: 进入文件夹\program files\lenovo controlApp, 点 ...

  5. Windows键盘驱动结构与消息机制--转

    https://www.douban.com/note/318793892/ 本文主要介绍按键消息是如何传递到窗口并转化为具体的按键消息的. Windows系统是事件驱动的多任务系统,其中按键和鼠标是 ...

  6. 带t2芯片的mac装linux,Macbook Air 2018(包含T2芯片)安装Precision Touchpad触摸板驱动...

    撰写日期:2020年2月4日 MacBook安装Windows后,触摸板的很多功能不能用了.浪费了MacBook这优秀的触摸板,解决办法是安装github上开源的Windows Precision T ...

  7. WT32-SC01是ESP32驱动3.5彩屏开发板方案适合用arduino方式开发吗?因为需要彩屏和电容触摸的驱动的

    ESP32驱动3.5寸彩屏开发板方案因为带有彩屏和电容触摸的驱动,能否用arduino方式开发,这是很多熟悉arduino开发的技术人员关心的问题. 目前启明云端推出的http://esp32.8ms ...

  8. Linux下的USB总线驱动(04)——USB键盘驱动 usbkbd.c

    原文链接地址:http://www.linuxidc.com/Linux/2012-12/76197p9.htm 跟USB鼠标类型一样,USB键盘也属于HID类型,代码在/dirver/hid/usb ...

  9. 210板wince键盘驱动分析和移植

    主要是bsp包里面的3个cpp文件的分析. 首先是pddlist.cpp文件 这个文件介绍了3种键盘的wince的api入口函数名前面加winapi),本文只关心第二种矩阵键盘. 然后在kbd.cpp ...

最新文章

  1. Redhat、centos安装配置postgresql
  2. Bootstrap3 栅格系统-媒体查询
  3. 面试遇到基础问题总结
  4. .Net开发人员应该下载的十种必备工具(一)
  5. java技术_2020年最流行的Java开发技术
  6. deepin20自带c语言,deepin 20.1终于找到你-国产操作系统deepin之初体验
  7. java字符串的方法 1118
  8. paramiko模块实现堡垒机的思路
  9. Windows10下安装原生TensorFlow GPU版
  10. SOME/IP报文格式-Payload
  11. redis在php下面的命令大全
  12. java docx4j 使用教程_docx4j深入学习整理
  13. 输油管的布置数学建模matlab,输油管布置的数学模型
  14. java 报表工具_15个Java的报表工具简介
  15. 电脑远程开机控制实现 免拆机安装
  16. java象棋打谱系统
  17. 什么是内存对齐?如何计算内存对齐?为什么要内存对齐?
  18. 2020美赛E题解题方法
  19. 恭喜 SphereEx 联合创始人潘娟成为亚马逊云科技新晋 Data Hero
  20. mongodb系列02-------深入理解索引原理

热门文章

  1. google搜索运算符+101个Google技巧 - Google技巧的终极收集
  2. 越狱中的项目管理(转)
  3. oracle中create table as和insert into select语句
  4. SCI期刊投稿额外材料准备
  5. PCB抄板及反向研发技巧总结
  6. 如何在 Linux 中检查打开的端口?
  7. j2objc java代码转换成objective-c
  8. win10下用nginx搭建一个点播服务器支持各类视频格式
  9. 大数据Flink End-to-End Exactly-Once
  10. Unity基础小案例---射击小球