|
使用CCS中的仿真跑一下 UART2_INT例程,结果在运行的时候一直卡在了 UARTPuts(" trolong ",-1);的位置。! [, A$ O9 g5 H! f
经过单步调试,发现其实程序一直卡在了 下面函数中红色的位置。请问这是什么原因?应该怎么解决,如果使用开发板跑的话,还会出现这个问题吗?(因为ASIgen软件的原因,还没有在开发板上试过)。
" k# Q$ ?& B1 [7 S- S
: e" b/ T$ x! {7 M2 F# xunsigned int UARTPuts(char *pTxBuffer, int numBytesToWrite)1 d9 V& j* f2 `. [! r
{
3 v; W2 A. k8 B; N8 M# L unsigned int count = 0;
% t5 l" z/ G4 ?) d; _ unsigned int flag = 0;& N$ ~# c( v: ]% Z* z. W
, d4 J9 Z# ^$ Y% F6 w! _
if(numBytesToWrite < 0)
, p" h; v+ C; r {
G# I4 h0 M7 k+ E% P flag = 1;
$ s! |/ c3 q2 a% g }
9 C" z9 S7 P. v: l e. B* L
- M, K* A" t: K while('\0' != *pTxBuffer)
: r, ?# F1 r; i. l {2 L, O5 ~) ^; }
if('\n' == *pTxBuffer)( K8 ~% o% P& ^4 t8 h: S
{: |+ s2 T7 ~( P, Y7 W% I) `+ h
UARTCharPut(SOC_UART_2_REGS, '\r');
7 D- O, e6 I2 N& m UARTCharPut(SOC_UART_2_REGS, '\n');
( A) u" v* ]* s) x/ y }" U. P( ?0 z8 O" v! H+ C5 H8 s
else
7 S* H/ O$ D+ C {# d N9 v% K) [( j& j
UARTCharPut(SOC_UART_2_REGS, (unsigned char)*pTxBuffer);
1 |( n2 ^ ?+ e+ j }
) f, W, k1 W) C/ A' O/ Z" L pTxBuffer++;
) B( M d- }7 I1 \7 k count++;
" N1 A6 m$ p: a1 J3 r( }$ ~) Q& p0 {( R& G( l* ]; @4 j
if((0 == flag) && (count == numBytesToWrite))
' [5 S* g, r: u+ j$ a8 z {8 A$ Q; i5 |8 Q
break;: P" B( \# X# Q
}
- S. Y& [9 M) f3 J$ l' S& K9 ]" ~" @! e) H
}
x( w' U. ^% _' G/ R, t
( I8 D3 x/ \$ V6 [3 O5 _ return count;
# L8 K! |& U: O2 k) q' E' I}
& H4 j( k$ n N( P) V h$ w
/ @( D& v7 b4 r3 D* A }5 t7 Z |
|