大佬们,我又来问问题我再学习stm32串口的时候,看的是浦中的视屏资料,觉得操作起来还是很简单的,但是当我想拓展一下的时候出现了问题,哎
我打算把串口的数据显示在屏幕上
使用浦中教的串口写法,写出接受部分,
void USART2_IRQHandler(void) //串口2 中断服务程序
{
static u16 count = 0;
u16 rdata;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
rdata = USART_ReceiveData(USART2); //读取接收到的数据
Res[count++] = rdata;
USART2->DR;
//USART_SendData(USART2,rdata);
//while(USART_GetFlagStatus(USART2,USART_FLAG_TC) != SET);
}
USART_ClearFlag(USART2,USART_IT_RXNE);
USART2->DR;
USART2->SR;
}
然后把接受到res里的数据在主函数中调用lcd函数显示出来
LCD_ShowString (0,0,&Res);
这个时候数据会一直接受一直存,不会清控,接受什么数据都会排在后面显示出来
然后我的想法就是直接清空res,屏幕上就会一直显示不同的数据了,但是又没想明白放在那里
还有就是想问一下sprintf函数到底应该如何用,早先我显示的时候是这样写的(A是char类型的)
sprintf(A,"%S", Res[0]);
LCD_ShowString (0,0,A);
然后屏幕上什么都不显示。。。
显示代码:
void LCD_ShowString(u16 x,u16 y,const u8 *p)
{
while(*p!='\0')
{
if(x>LCD_W-16){x=0;y+=16;}
if(y>LCD_H-16){y=x=0;LCD_Clear(RED);}
LCD_ShowChar(x,y,*p,0);
x+=8;
p++;
}
}
已经整麻了。。。自学得有点晕头转向。。。。疯狂碰壁。。。望大佬指点
|