高级会员

- 积分
- 527
- 金钱
- 527
- 注册时间
- 2017-1-21
- 在线时间
- 192 小时
|
发表于 2018-12-14 13:33:12
|
显示全部楼层
void USART3_IRQHandler(void) //串口3中断服务程序,用于和触摸屏通讯。
{
uint8_t Res;
static uint8_t US_STA = 0; //用于检测是否已经收到帧头,未收到为0,收到A8为1,收到8A未2。
static uint8_t buffer_num = 0;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
Res = USART_ReceiveData(USART3); //读取接收到的数据
if(!USART3_RX_STA)
{
if(US_STA == 0)
{
if(Res == 0xA8) US_STA = 1; //接收到了0xA8,US_STA=1
}
else if(US_STA == 1)
{
if(Res == 0x8A)
{
US_STA = 2; //接收到了0x8A,US_STA=2
buffer_num = 0;
}
else US_STA = 0; //A8后面不是8A则全部重新接收。
}
else if(US_STA == 2)
{
USART3_RX_Buffer[buffer_num] = Res;
if(buffer_num++ == USART3_RX_Buffer[0])
{
buffer_num = 0;
USART3_RX_STA = 1; //当接收数量等于缓存0位置时,则接收完成。
US_STA = 0;
}
}
}
}
}
用这个中断函数收就行了,A8 8A是我迪文屏的2位帧头,根据你自己设置的改一下就好。
另外你说电脑能收到屏的数据,那就是232电平喽。你接单片机有没有转3.3V TTL? |
|