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

猜你喜欢

转载自www.cnblogs.com/cnlntr/p/12199224.html