大佬們,我又來問問題我再學習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++;
}
}
已經整麻了。。。自學得有點暈頭轉向。。。。瘋狂碰壁。。。望大佬指點
|