4回答

0收藏

STM32F407的SPI1接口的2046驱动源代码

#竞赛 #竞赛 3742 人阅读 | 4 人回复 | 2013-10-07

此驱动适合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)





分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

youyuwangzi16

发表于 2013-10-7 20:03:26 | 只看该作者

自己顶下啊
板凳

youyuwangzi16

发表于 2013-10-7 20:11:33 | 只看该作者

上张图吧
地板

fj1161

发表于 2013-10-8 08:36:38 | 只看该作者

顶一下~~~~~~~~~~~~~~~~~·
第五年了,这次一定要坚持到底,不留遗憾!!!
5#

youyuwangzi16

发表于 2013-10-8 08:54:00 | 只看该作者

fj1161 发表于 2013-10-8 08:36
顶一下~~~~~~~~~~~~~~~~~·

谢谢你的支持啊
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条