|
使用CCS中的仿真跑一下 UART2_INT例程,结果在运行的时候一直卡在了 UARTPuts(" trolong ",-1);的位置。9 q0 I" G# i) `" R: R- y0 M9 N
经过单步调试,发现其实程序一直卡在了 下面函数中红色的位置。请问这是什么原因?应该怎么解决,如果使用开发板跑的话,还会出现这个问题吗?(因为ASIgen软件的原因,还没有在开发板上试过)。- \; l9 E9 w! `1 _0 F- L
9 n( q+ r5 x! u7 k% `5 k9 r
unsigned int UARTPuts(char *pTxBuffer, int numBytesToWrite)
# ^8 O, |$ B* t) T! o s8 T{
2 ~0 K2 r4 t, m# G# g unsigned int count = 0;
* H$ L+ H* D" @# J unsigned int flag = 0;2 e0 z' ]% e' r4 G- ~- t+ J
& ]1 F" P6 y8 a U B7 L: M
if(numBytesToWrite < 0)
. A( Y0 D0 L: w4 o) i. F* C {
! ?' Y0 W* `' ~6 d! ^) c flag = 1;0 |' o1 `. Y! b- S* @+ `
}+ a+ ]8 q& z* X
! ^5 ? X) a- x+ b7 A while('\0' != *pTxBuffer)
, ]+ @2 [ r/ e {6 O. M+ o. A9 T7 ?
if('\n' == *pTxBuffer)
1 W/ S* h; ~, G: g j, _7 N/ E$ E {& n C3 X' b. j' f2 ]. l
UARTCharPut(SOC_UART_2_REGS, '\r');( M2 o# Y1 R2 a* a8 l
UARTCharPut(SOC_UART_2_REGS, '\n');
4 {* j( y+ y3 w* y$ E5 L5 }0 k }7 l# u+ B& [8 f# w; P
else6 W7 M" z- _" O1 H
{ C! }$ L k# b+ X4 c5 e. j
UARTCharPut(SOC_UART_2_REGS, (unsigned char)*pTxBuffer);
7 A9 N% S9 p0 O+ A) t: h0 ~ }! T" b2 F& T# r2 C2 p
pTxBuffer++;
2 \7 ~' |' a$ i6 y count++;
7 p" ]: D/ T- v' F9 u
- A" I% N( M2 k ~! o3 [ if((0 == flag) && (count == numBytesToWrite))- U* d4 a& z1 \* X% s% U
{1 v) ~( L }& F; C& O
break;
3 t- z6 u" _( N$ R }
R- n# S2 t2 \6 X0 l" ]' `$ O2 X* w/ r8 I2 j: k0 {
}, ^* K+ W+ X8 U; ?
( A7 a% B p' ^: H6 J
return count;, w2 W6 X( j$ y5 ^+ s! @# }
}6 u4 [$ T* p( u2 d
# M& ~+ B5 g* C y4 z |
|