#ifndef TOUCH_H
#define TOUCH_H
#define SPI 0 //通过宏定义来选择SPI驱动,还是IO口模拟
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_exti.h"
#include "stm32f10x_spi.h"
#include "math.h"
#include "TFT.h"
#define TCS_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_12) // NSS Soft Mode
#define TCS_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_12) // NSS Soft Mode
#define PEN GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0) //INT state
#define TOUT GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)
#define TDIN_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_15)
#define TDIN_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_15)
#define TCLK_HIGH GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define TCLK_LOW GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define TXMAX 4000 //根据设定的校准值,超出范围 数据无效
#define TYMAX 4000
#define TXMIN 100
#define TYMIN 100
#define SCREEN_W 240
#define SCREEN_H 320
#define ERROR_RANGE 100
#define KEY_UP 0x01
#define KEY_DOWN 0x00
#define CHX 0xd0
#define CHY 0x90
#define EXTI_ENABLE EXTI->IMR|=0X0001 //开启线0中断
#define EXTI_DISABLE EXTI->IMR&=~0X0001 //关闭线0中断 //ads7843芯片在第一个时钟的上升沿输入,第一个时钟的
typedef struct sldkf //下降沿输出,所以SPI要设置为1时钟,上升沿。在读取的时候,
{ //也是在1时钟,上升沿读取。但ads是在下降沿输出,所以,第一个值,是废值
u16 x0,y0; //原始坐标,即AD值 //所以左移3位
u16 x,y; //最终坐标,像素点值
u8 flag; //当前状态,其实就是判断中断否发生的标志
float xfac,yfac,xoff,yoff; //偏移参数
}Hand;
Hand pence;
u16 TX,TY;
int ABS(int x)
{
return x>0?x:-x;
}
void Touch_SPI_inti() //SPI驱动ADS所用到的初始化
{
SPI_InitTypeDef spi;
GPIO_InitTypeDef gpio;
NVIC_InitTypeDef nvic;
EXTI_InitTypeDef exit;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
gpio.GPIO_Pin=GPIO_Pin_12; //nss 推挽输出
gpio.GPIO_Mode=GPIO_Mode_Out_PP;
gpio.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&gpio);
gpio.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_15; // sck,mosi 复用推挽输出
gpio.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&gpio);
gpio.GPIO_Pin=GPIO_Pin_14; //miso 浮空输入
gpio.GPIO_Mode=GPIO_Mode_IPU;
// gpio.GPIO_Mode=GPIO_Mode_IN_FLOATING;//miso 配置为复用输出,或者浮空输入效果没差别,不解
GPIO_Init(GPIOB,&gpio);
SPI_Cmd(SPI2,DISABLE);
spi.SPI_Direction=SPI_Direction_2Lines_FullDuplex; //全双工
stm32驱动3.2寸触摸屏(包括IO模拟,SPI硬件接口)
最新推荐文章于 2024-05-14 17:58:35 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)