TA的每日心情 | 衰 2018-3-6 14:29 |
---|
签到天数: 81 天 连续签到: 1 天 [LV.6]常住居民II
|
此驱动适合XPT2046以及TSC2046,对外使用接口函数简单,做到了能正确的读取出X,Y的值
对X,Y值的读取是通过中断进行的,驱动对外函数接口:
void Touch_Init(void); //初始化
void TSC_EXTI_ENABLEORDISABLE(uint8_t);//外部中断使能 0:DISABLE 1:ENABLE
uint8_t TSC_ReadEndData(uint16_t *,uint16_t *); //读取X,Y的值 ,详细代码可参考下面的附件
把中断的例子贴上去吧:
void EXTI9_5_IRQHandler(void)
{
uint16_t x,y;
uint8_t str[5];
if(EXTI_GetITStatus(EXTI_Line6))
{
TSC_EXTI_ENABLEORDISABLE(0);
if(TSC_ReadEndData(&x,&y))
{
u16tostr(x,str);//整形转字符数组函数,参考itoa这个函数自己改写的
USART_DEBUG_SendString("X:");
USART_DEBUG_SendString(str);
u16tostr(y,str);//整形转字符数组函数,参考itoa这个函数自己改写的
USART_DEBUG_SendString("Y:");
USART_DEBUG_SendString(str);
}
EXTI_ClearITPendingBit(EXTI_Line6);
TSC_EXTI_ENABLEORDISABLE(1);
}
}
//整形转字符串函数也给大家贴上去,自我感觉编写itoa这个函数的人,真是太厉害了
uint8_t *u16tostr(uint16_t num,uint8_t *str)
{
uint8_t i=0,j;
uint8_t temp;
do
{
str[i++]=num%10+'0';
num/=10;
}while(num);
str='\0';
for(j=0;j<=(i-1)/2;j++)
{
temp=str[j];
str[j]=str[i-1-j];
str[i-1-j]=temp;
}
return str;
}
驱动代码:
touch-spi.zip
(1.98 KB, 下载次数: 10)
|
|