|
|
使用CCS中的仿真跑一下 UART2_INT例程,结果在运行的时候一直卡在了 UARTPuts(" trolong ",-1);的位置。
2 F w" l+ L) S) I1 l. k6 k. \& ?经过单步调试,发现其实程序一直卡在了 下面函数中红色的位置。请问这是什么原因?应该怎么解决,如果使用开发板跑的话,还会出现这个问题吗?(因为ASIgen软件的原因,还没有在开发板上试过)。
3 y ]4 T! Z, Q9 c& k- @: d& T! V( g' g: s
unsigned int UARTPuts(char *pTxBuffer, int numBytesToWrite)% {6 N& @* N0 B0 ^0 w# C, y
{
! |+ g- P6 Y! I( a/ w+ x' O unsigned int count = 0;, W% p# }9 R& q F" M4 L9 e+ o
unsigned int flag = 0;
/ v+ k; A- {: l+ k3 v; L& ?# ?- r' ?( B4 b; s C8 a2 x
if(numBytesToWrite < 0)
& o. h$ `& u* |4 f. S {
$ T i7 r. G# ?% G flag = 1;
; m% o- W) x/ M# S! C }6 }5 ]% s6 j/ x6 B& ~
, D+ @, P9 K: K" {# w9 y) G/ r) t while('\0' != *pTxBuffer)
% a; X/ O. I, g2 }8 K# E; C; e& T {# \, l0 Z' U* S0 c- a8 y
if('\n' == *pTxBuffer)8 k6 a+ G3 X6 Y8 t( N% Y3 ?* C/ n
{/ V" U4 r) W% v, {1 E
UARTCharPut(SOC_UART_2_REGS, '\r');
J2 Q1 Z5 @* G' S UARTCharPut(SOC_UART_2_REGS, '\n'); c" w! i2 u" m8 I0 H
}
' ]/ ?1 F& E6 j }7 d) d else
b @$ W$ V$ F- E) Y/ T; c8 G3 Q {7 q6 ^" f1 [7 K8 U7 T* H- q
UARTCharPut(SOC_UART_2_REGS, (unsigned char)*pTxBuffer);. l2 p$ h) S6 C
}
7 t/ A9 e% b! ]+ f pTxBuffer++;% S1 N1 E a, r) [
count++;8 f" L5 f+ Y* \5 d, A+ z
5 a3 q+ s5 p2 |# ]. j% i8 b7 s if((0 == flag) && (count == numBytesToWrite)), L: Y5 `& J' D, i' m
{& B1 {% Q5 Z$ T2 N) {+ i& N7 n
break;
7 R; Q ]2 F( X5 }' R }
; B2 q Z* c5 z: y% M8 Z O5 p/ n- a( X' N- E
}
; `# `% v: P' {5 G7 b. m" F5 b( U9 Q n7 M
return count;6 l$ n. j9 A% L
}; ~$ o4 ~9 d# N! w. |$ H1 M3 e
# z0 U; f5 [: T6 d |
|