TTP229BFS电容式触摸键盘测试程序及驱动—STM32F407(库函数版串口测试)

一、配置

(1) STM32设置

USART1

1 #define SCL PAout(1)        //2-线串行时钟输入端口
2 #define SDO PAin(4)        //2-线串行通讯方式下为数据输出端口

(2) TTP229设置

TP0=0,TP2 = 0,TP7 = 0,其余默认为1

2线串行输入——CMOS低电平有效输出

有效按键最大输入时间设定为80s

二、程序代码

 1 #include "stm32f4xx.h"
 2 #include "usart.h"
 3 #include "delay.h"
 4 #include "TTP229BFS.h"
 5
 6 int main(void)
 7 {
 8     //unsigned char a = 0;
 9     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
10     uart_init(128000);
11     delay_init(168);
12     TTP_GPIOInit();
13     while(1)
14     {
15         delay_ms(500);
16         printf("输入的键值为:%d\r\n",TTP229_WRITE());
17     }
18 }

main.c

 1 #ifndef TTP229BFS_H
 2 #define TTP229BFS_H
 3
 4 #define SCL PAout(1)        //2-线串行时钟输入端口
 5 #define SDO PAin(4)            //2-线串行通讯方式下为数据输出端口
 6
 7 void TTP_GPIOInit(void);
 8 unsigned char TTP229_WRITE(void);
 9
10 #endif

TTP229BFS.h

 1 #include "TTP229BFS.h"
 2 #include "stm32f4xx.h"
 3 #include "delay.h"
 4 /********************************************************************
 5 函数原型:void TTP_GPIOInit(void);
 6 功能:TTP IO初始化
 7 输入参数:无
 8 返回值:无
 9 ********************************************************************/
10 void TTP_GPIOInit(void)
11 {
12     GPIO_InitTypeDef  GPIO_InitStructure;
13     //时钟使能(A)
14     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
15     //IO口配置PA1输入
16     GPIO_InitStructure.GPIO_Pin =     GPIO_Pin_1;
17   GPIO_InitStructure.GPIO_Mode =     GPIO_Mode_OUT;
18   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
19   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
20   GPIO_InitStructure.GPIO_PuPd =     GPIO_PuPd_UP;
21   GPIO_Init(GPIOA, &GPIO_InitStructure);
22     //IO口配置PA4输出
23     GPIO_InitStructure.GPIO_Pin =     GPIO_Pin_4;
24   GPIO_InitStructure.GPIO_Mode =     GPIO_Mode_IN;
25   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
26   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
27   GPIO_InitStructure.GPIO_PuPd =     GPIO_PuPd_UP;
28   GPIO_Init(GPIOA, &GPIO_InitStructure);
29 }
30 /********************************************************************
31 函数原型:unsigned char TTP_READ(void);
32 功能:TTP229键值获取
33 输入参数:无
34 返回值:键值
35 ********************************************************************/
36 unsigned char TTP229_WRITE(void)
37 {
38     unsigned char i;
39     unsigned char key = 0;
40     SDO = 0;
41     delay_us(93);//93us
42     SDO = 1;
43     delay_us(15);//15us
44     for(i = 0;i <= 16;i++)
45     {
46         SCL = 0;
47         if(!SDO)    key += i;
48         delay_us(3);
49         SCL = 1;
50         delay_us(3);//150KHz
51     }
52     return key;
53 }

TTP229BFS.c

原文地址:https://www.cnblogs.com/cnlntr/p/12199224.html

时间: 2024-10-22 02:39:46

TTP229BFS电容式触摸键盘测试程序及驱动—STM32F407(库函数版串口测试)的相关文章

一个简单的截取键盘按键的驱动

近来在学驱动开发,自己写了一个简单地驱动程序,截取键盘按键,另外写的应用程序会显示按键.下面是驱动部分的关键代码,完整代码点击:猛戳这里 /**************************************************************/ #include "KeyFilter.h" /************************************************************************ * 函数名称:DriverE

第10章 新建工程-库函数版—零死角玩转STM32-F429系列

第10章 ????新建工程-库函数版 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ? 了解STM32的标准库文件之后,我们就可以使用它来建立工程了,因为用库新建工程的步骤较多,我们一般是使用库建立一个空的工程,作为工程模板.以后直接复制一份工程模板,在它之进行开发. 本章的"工程模板"范例可在配套资料中找到,自己新建工程模版时可参考该工程. 10.1 新建工程 版

第10章 新建工程—库函数版

第10章     新建工程-库函数版 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 了解STM32的标准库文件之后,我们就可以使用它来建立工程了,因为用库新建工程的步骤较多,我们一般是使用库建立一个空的工程,作为工程模板.以后直接复制一份工程模板,在它之进行开发. 本章的"工程模板"范例可在配套资料中找到,自己新建工程模版时可参考该工程. 10.1 新建工程 版本说

《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT

感谢唯笑志在分享 原博主原地址:http://www.cnblogs.com/lsjwq/ 注:ServerSuperIO有可能被移植到Windows 10 IOT上,那么将来有可能开发一套设备驱动,可以支行在服务端.嵌入式设备中,将形成完整的解决方案.       现在已经调试通过部分代码,还得需要一段时间,一般都是晚上干,时间也有限.如下图: 目       录 4.如开发一套设备驱动,同时支持串口和网络通讯... 2 4.1           概述... 2 4.2          

新建工程—库函数版

版本号可从 MDK 软件的" Help-->About uVision"选项中查询到. 然后对应添加库文件. 把所有文件添加进入之后,编译工程,会报很多错误. 那是因为我们的某个头文件里面有条件编译,但是我们现在没有开启,用ST的建议就是,为了不改动工程文件,我们可以在编译器上定义需要的宏.在在此之间忘了说明一个重要问题,我们必须指定头文件的编译路径,不然keil不能正常编译我们的头文件. 然后在魔术棒中定义宏: 注意两个宏之间用英文逗号隔开.再编译,还是提示很多错误. 这是因为

嵌入式驱动开发之spi---spi串口通信调试

一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是:          * SPICLK     : 用于传输数据的同步时钟          * SPIMISO    : 用于主模式下的输入,或从模式下的输出信号线          * SPIMOSI    : 用于主模式下的输出,或从模式下的输入信号线          * PSS        : 用于从设备的片选信号,低有效 SPI 通信两端各自扮演主设备

串口驱动程序设计详解---串口初始化(上)

TTY驱动程序架构: 1. TTY概念解析 1.1 /dev/ttySCA0 1.2 /dev/tty1-n 1.3 /dev/console 在linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. . 串口终端(/dev/ttyS*) 串口终端是使用计算机串口连接的终端设备.Linux把每个串行端口都看做是一个字符设备.这些串行端口所对应的设备名称是/dev/ttySAC*; .控制台终端(/dev/console) 在Linux系统中,计算机的输出

自己动手,丰衣足食。普通键盘实现键盘宏(Windows和Mac版)

很多高端机械键盘,支持宏定义,例如我们可以设置"D"键为"dota",这样当我们按一下宏开启键,再按一下"D"键,就等价于分别按了"d" "o" "t" "a"四个键.这时就可以把一些敲代码时常用的模板定义成键盘宏,到时候一键补全代码,既高效又装X.另外,玩游戏时想按出“下前下前拳”这样的组合技能也容易多了. 那么问题来了.. 山里来的买不起机械键盘的穷B同时又是程序

领域驱动设计的必要性和模型标准——《领域驱动设计-精简版》

一.领域驱动设计 领域驱动设计早在30年前就已经为人所知,一些设计人员开始开始领域建模,领域通用语言的思维构造,以便能够在领域专家和开发专家形成高效的沟通,Eric Evans将这种思维(思潮)定义为Domain-Driven Desigin(领域驱动设计,简称DDD).DDD在B/S还不这么流行的年代,主要应用在软件公司,因为很多都是C端,但是现在各个互联网公司将很多业务尝试模块化.量级上规模化,业务上多样化,不再是CRUD这么简单,因此,领域驱动设计在互联网开发中也起到了一个很好的引领作用.