EDA365电子论坛网

标题: 串口卡在最后一条语句的while循环里有人碰到过这种情况吗 [打印本页]

作者: oewqe    时间: 2022-9-30 15:22
标题: 串口卡在最后一条语句的while循环里有人碰到过这种情况吗
串口卡在最后一条语句的while循环里,有人碰到过这种情况吗?谢谢。) e+ `0 n/ N: p/ ]7 o, ~
难道和rtt的串口框架冲突了?( I3 t8 V* ]* w# U

0 M6 b) ^3 ^: m+ N4 k: R! O: vvoid LCD_INT_N(uint16_t addr,uint16_t n)+ r5 b+ P! M3 T! ?4 k
{# I, e- t- _8 k! W1 H. }9 c
uint16_t t,crc;
" i# k+ [% c- v# }, VLCD_buff[0]=0x82;
. _9 R7 p; S7 _7 eLCD_buff[1]=addr/256;
4 }" U# t4 M( P8 Z3 b' WLCD_buff[2]=addr%256;
: S: Z3 S( ?8 _- e8 kfor(t=0;t<n;t++)8 @7 w, o" `* [: J8 r3 T0 d2 G
{
- F1 B, o: B2 _# j' n2 MLCD_buff[3+t*2+0]=LCD_DAT.uc[t*2+1];;
, _8 O( ^" b7 M, b5 g5 fLCD_buff[3+t*2+1]=LCD_DAT.uc[t*2+0];;
4 K+ @4 K2 M% M" _}
1 u: h* o- O& E) J& dcrc=LCD_CRC16(LCD_buff,n*2+3);
: p7 u! y2 H* d4 [LCD_buff[n*2+3]=(uint8_t)(crc/256);
& x% C2 V9 B* Z+ gLCD_buff[n*2+4]=(uint8_t)(crc%256);
7 K. r0 C1 V' Y1 kUSART1->DR=0x5a;while((USART1->SR&0X40)==0);
1 U/ G$ P" [8 H' K  |6 qUSART1->DR=0xa5;while((USART1->SR&0X40)==0);3 T3 ]- l, v* ?
USART1->DR=5+n*2;while((USART1->SR&0X40)==0);
2 f; u% t9 R; O9 \- Qfor(t=0;t<(n*2+5);t++)
0 y4 c3 G3 W( X: O{4 N5 C; ^8 V; \6 H( f+ v
USART1->DR=LCD_buff[t];
% }* m! |( ^) a( X6 Uwhile((USART1->SR&0X40)==0);
; b9 `0 W; Z* i3 i) }}
% @4 G, z9 |/ ?: B; w1 u}thread.org/ask/question/37c829e885374055.html: Q5 ^3 o" D8 B

作者: itch    时间: 2022-9-30 15:45
你发的命令有回车换行符吗
: J# t. R, S, Y" W4 f5 O& ]7 V) l3 N. |
作者: lahhse    时间: 2022-9-30 16:18
我之前也一直判断txe,字符串结束的时候来一个tc,这个用的别人代码,这个问题出现概率不大。9 c1 R( V& w/ R
我看到一种方法是,
0 e/ ~0 v0 R, W# s0 l* t- W5 E5 t& |3 ?6 e: w2 W
while((USART1->SR&0X80)==0);//先txe
& y7 J  ]  Y+ K+ b: [USART1->DR=LCD_buff[t];
. M+ P6 D! y$ `4 Y& wwhile((USART1->SR&0X40)==0);//再tc
: X* g$ J  |' Y. |




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2