|
使用CCS中的仿真跑一下 UART2_INT例程,结果在运行的时候一直卡在了 UARTPuts(" trolong ",-1);的位置。7 j7 [8 `5 @; X' E' H
经过单步调试,发现其实程序一直卡在了 下面函数中红色的位置。请问这是什么原因?应该怎么解决,如果使用开发板跑的话,还会出现这个问题吗?(因为ASIgen软件的原因,还没有在开发板上试过)。+ t' |5 Q# U9 k; d8 m2 Z- c/ Z
7 g" d, c' o- a3 @) Eunsigned int UARTPuts(char *pTxBuffer, int numBytesToWrite)5 v2 J- O5 J6 o
{' p g P' ?* @$ d
unsigned int count = 0;
5 T6 G2 ^+ I5 | unsigned int flag = 0;
! J% ?- p% [" f) }; j" Q- W* S( ?6 V8 h; {# \4 [$ n' s$ ]2 E
if(numBytesToWrite < 0)0 A* R& R. H7 X7 f6 W
{+ z s4 _% t7 ]2 d. Z: W
flag = 1;
. D0 N: q2 D: V+ e }
, N4 f, B/ ?' ]4 G' `& r" t( ~# b6 @6 z- p* w
while('\0' != *pTxBuffer)2 _, E I( _+ z; n
{
m( ` b2 S9 P9 }4 A# M+ ~ if('\n' == *pTxBuffer)5 F) @" O- M2 {2 F
{
6 Y# g5 c! U; s UARTCharPut(SOC_UART_2_REGS, '\r');8 A# l- L; a) R. D. f9 p# X- M0 z
UARTCharPut(SOC_UART_2_REGS, '\n');
5 M! N- C# f6 S }
# G: n" {; M" p6 `0 j2 } else
\0 j7 N7 i" }( G {
4 O! X8 _4 P4 K& z7 ^$ e UARTCharPut(SOC_UART_2_REGS, (unsigned char)*pTxBuffer);
. e1 a) ?& ?! Q5 A0 ?; @; i }5 S9 i2 y8 p/ [ X
pTxBuffer++;! R+ {1 Y; M: y; u+ L
count++;$ M6 P! b: L$ s, q8 `: L" b9 H
. Y j0 s5 P6 T6 W/ v if((0 == flag) && (count == numBytesToWrite))
* `$ I/ I/ s$ t- I0 w. | {
' V; E' w& a9 M1 y+ M9 z break;
' v7 t, b! t+ H& T/ J }
) F- N0 v' J2 b/ J- N9 |0 y w0 \# T" y2 \* F m. A' V
}6 X" U2 a4 Q0 P; W
0 k; S. n1 w6 @9 [7 n return count;" |, J* u6 Q! Q0 Q8 w- N& Y" q* M
}, k! Y- e& @6 s. a" m. j& p) m
% G/ f: J" |/ e6 v. v0 {
|
|