|
使用CCS中的仿真跑一下 UART2_INT例程,结果在运行的时候一直卡在了 UARTPuts(" trolong ",-1);的位置。
. z/ b G3 g) S U7 g经过单步调试,发现其实程序一直卡在了 下面函数中红色的位置。请问这是什么原因?应该怎么解决,如果使用开发板跑的话,还会出现这个问题吗?(因为ASIgen软件的原因,还没有在开发板上试过)。% c0 x, F \% X K" @: S4 B+ [
% h! P+ u. j! L% S: n: A
unsigned int UARTPuts(char *pTxBuffer, int numBytesToWrite)+ l/ c9 ]* H2 j7 _# x/ Z3 m2 e
{
4 i' b8 R) F0 m Y Z unsigned int count = 0;" b0 m% y! O B) G8 x
unsigned int flag = 0;
7 @( s6 `( g5 b) z, f' J$ Z! u& ]1 Z' C1 q# V- z
if(numBytesToWrite < 0)
! H6 c" G) r' D! y I2 W {. W2 T6 {% \5 `' A$ o8 Z
flag = 1;
2 w5 Q; o g/ }7 q5 l }7 \9 V7 j: n6 [3 R- u
, E* D6 g, b; x) {
while('\0' != *pTxBuffer); S) d# a/ F6 r1 j6 ?& p) `: y0 L0 c4 n
{& i4 R5 @0 l8 Q: B9 W
if('\n' == *pTxBuffer)
# |' j+ y: w& g( b {, @% g2 z; p4 z* a) [ { W
UARTCharPut(SOC_UART_2_REGS, '\r');8 Z; w( e t/ }* r: n
UARTCharPut(SOC_UART_2_REGS, '\n');* x% M/ t( g0 Z) W6 A8 Z
}1 L- S$ O/ K4 r# c
else
& L L+ h) [) B7 l$ ^' d {
) f# E3 M+ \/ v6 X3 B UARTCharPut(SOC_UART_2_REGS, (unsigned char)*pTxBuffer); {, b: G9 ?/ t! d" P, [
}
/ N7 b' S' L/ R H: W8 @0 F: K pTxBuffer++;
, ~8 ]% \- h+ F1 h; ? count++;
( O, s7 t6 C3 t0 K8 e& M
) F5 c& ^& d2 m8 e if((0 == flag) && (count == numBytesToWrite))
5 m7 l w* Y1 T4 X6 S4 C+ [& N {% O% b K( C4 I. x
break;
9 c0 I% Z4 e* z; u2 A+ S4 y }" u4 {" h6 I. T
- A9 o6 f7 _ O1 l( e! l4 Z, [ }, \6 A5 Q" K+ G% x3 v8 w$ E
$ I5 ], {3 I6 G0 m% c% x( c9 @
return count;4 o4 z9 p1 S' U2 T1 t0 d
}5 }' K% M; W* J
. S1 V, m7 \ G6 X k8 T0 z |
|