一、配置
(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