|
|
使用CCS中的仿真跑一下 UART2_INT例程,结果在运行的时候一直卡在了 UARTPuts(" trolong ",-1);的位置。
8 B/ P0 o; D3 m% |* E6 t' o8 x* V经过单步调试,发现其实程序一直卡在了 下面函数中红色的位置。请问这是什么原因?应该怎么解决,如果使用开发板跑的话,还会出现这个问题吗?(因为ASIgen软件的原因,还没有在开发板上试过)。* ~ \: v1 D: e
3 w/ ]. p, z3 W3 {$ g* l/ n; x9 Tunsigned int UARTPuts(char *pTxBuffer, int numBytesToWrite)
& I' ~) {% B4 Q6 M( ~4 ?% _{: S" ?4 z7 e* [, y6 K4 ]7 W' |
unsigned int count = 0;
1 X9 M3 C# ~. c! \ unsigned int flag = 0;
) b" q/ o' i! ?' P6 a: E/ H' h, F: G7 W' u& x
if(numBytesToWrite < 0)
# C* }9 v6 f) t6 \ {
; c+ B, c8 ^# n, j flag = 1;( C: ?& t; {9 s4 H
}
2 ~5 q1 d4 D8 H) X$ d0 @! ^9 O
- J) c; j, @ e* ] Y while('\0' != *pTxBuffer)
7 ?' y6 m: x5 e# s {
3 Q. @% l+ W L" Q; y' j if('\n' == *pTxBuffer)
& m/ ?5 u# q! u4 \ {5 V/ V; M' b; r9 \
UARTCharPut(SOC_UART_2_REGS, '\r');
7 Y! Z" A0 R' ^8 G9 b2 d# H UARTCharPut(SOC_UART_2_REGS, '\n');
) h6 i4 Z* i6 W( L' L }
! q) V! Z; l9 x# \$ \1 D2 W else, q4 W( @, ?" r1 u& s2 r
{# D$ v d; P* h! D4 `% T8 g
UARTCharPut(SOC_UART_2_REGS, (unsigned char)*pTxBuffer);
% F; c3 j7 R! g7 X9 `& Z }+ e( ^' N% W, q
pTxBuffer++;
5 U& d3 H) h; c; F5 Z U! _ count++;) E4 N5 I$ G* @ M. ^. A
X; N8 d d/ ?. I5 Z! `
if((0 == flag) && (count == numBytesToWrite)), Z' Z5 v6 ]7 m
{
5 L( o6 n6 e# _3 h" z break;% A) |3 O$ w) n) `4 }2 z* {) E9 _
}
Q. _6 X) s8 X# i4 v. I+ t3 ^) y# ^4 E0 |# v
}0 I4 N9 `" S: ^4 C3 [* P
; ?4 z$ B. \( U4 ^4 Z* b
return count;
4 r7 [ L: t1 E}
, z# c' f4 v" u6 A' c' e o- ~1 A$ v
|
|