嵌入式开发者社区

标题: 关于“UART2_INT——UART2串口中断收发”例程 [打印本页]

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问) r' W. R8 C, _' h
1.。DSP解算出来的数据是存在哪里?; k8 o$ k: u8 c1 L
2.。在例程中有这段代码:; Y5 m% E5 W2 k, @3 w
unsigned int int_id = 0;% @. _0 x1 h# D. E* t5 D( m

: w% ~( c* S( h- a    // 确定中断源
: c6 N6 L. p/ D) u" d( B* z2 R3 h    int_id = UARTIntStatus(SOC_UART_2_REGS);
& @$ G: t, w' p/ s) ~1 v8 _9 o
% k) g) a& Q# E, A+ R7 n    // 清除 UART2 系统中断
) Z; I0 P8 B7 o1 [    IntSystemStatusClear(SYS_INT_UARTINT2);0 _: W  V; E# ]% O& m3 R7 k

8 z1 \1 p; T6 B5 Q    // 发送中断
) P& u5 I3 e9 i+ u& b7 ]* C    if(UART_INTID_TX_EMPTY == int_id)$ i* P, d2 @; B/ X- R5 I$ s
    {
  Y1 F# q8 C! ?2 b9 R& G% I( J        if(0 < length)$ a' J' Y. o) a
        {9 ~& Q+ F0 n& ]# a: Y
            // 写一个字节到 THR
2 V. u3 U/ ^: X/ m+ f            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
) V% u/ \# U% U( ]( f  @            length--;
" ^3 F8 w  p: l% q, s% M6 z            count++;
- j! [! \) p/ P& c( z/ A6 ]- j        }
% a7 v0 z9 o2 X1 o; d: E8 F# E" i        if(0 == length)
. l. \4 r" ], q7 w5 j$ k9 ^) m% a        {- F$ C$ d5 t& S. ?; `
            // 禁用发送中断
& q9 N7 G* S# N8 R            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
1 i7 T9 t4 G3 J+ Q1 n# e        }5 l) L5 n% f' J/ B* h7 q: c1 ~
     }
/ O  c, C; c2 O/ {/ o! ]( l我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以  z3 {$ m0 k9 C; m4 c4 j/ a* B: d0 q( n
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 - P( |' O9 C. p6 `8 `3 i+ a2 @
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
" S/ _5 o5 W/ c  h7 L) P* i1、存在所有可以访问的 RAM 空间都可以
6 o% e- B' \" U3 h5 l0 }& [0 p+ T2、因为每接收一个字节就产生一次中断 ...

* |/ E  l. f2 V7 W. T! ]4 z那下次中断是怎么触发的呢?
5 R/ k& x1 [9 q' ]9 [
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
8 r: J5 o- _+ ~$ `1 ~接收到下一个字节
. d1 B4 S$ v+ a! R0 T
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?, O/ c- X# s+ Q) ?# c4 `

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43' E7 @" h; ]7 e0 p
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 z: J; V$ R/ a, g1 {8 L+ H
...

: a, S  O3 g- ~2 `手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦8 }0 w1 |0 w/ X/ m) m2 t$ B

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27* u+ {& M8 L) r1 ]; ]! \
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

' Q- ~2 W* d$ [( o8 L  |; F% A9 R5 ]你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33+ T3 d  e, P: M* `& F6 I1 k
手动使能发送中断就会触发下一次发送
1 P6 S+ ]4 Z1 v7 s0 B9 C
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
! b5 q. F3 y) t# _您好,我想问一下如何手动使能发送中断?

, R/ q' J  Z4 R8 }  ^您好 不好意思回复晚了
5 E8 Q9 \5 [' P应该这样就可以了
3 z4 {& v' B- D+ t7 Z9 U3 v! _    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




欢迎光临 嵌入式开发者社区 (https://51dsp.net/) Powered by Discuz! X3.4