嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问6 I" D+ C8 o* |* Z& D5 F" Q( @% ]
1.。DSP解算出来的数据是存在哪里?$ u5 c/ `1 ]1 r" J5 H9 p+ j0 ^
2.。在例程中有这段代码:. [- a8 c; @* X6 p; z
unsigned int int_id = 0;
8 R) O0 K4 y* W2 X( T. N( K6 _, a+ J$ Z1 N9 E
    // 确定中断源
: j, }" |. k, S" Q' L+ d+ C% K    int_id = UARTIntStatus(SOC_UART_2_REGS);' g" F+ M3 [0 c5 i( q  Z- X7 ^! K
- ?" h6 Q/ ^8 M9 W9 c, I0 e: {0 H
    // 清除 UART2 系统中断. o! [* U8 g+ j( X1 h* L# C
    IntSystemStatusClear(SYS_INT_UARTINT2);, z5 Q5 A) S; h# u' c/ F

, U2 f) J- P$ y8 m7 F6 ^/ [- E0 ]    // 发送中断- v% R# v1 o' M
    if(UART_INTID_TX_EMPTY == int_id)3 w3 o6 E& r8 ], F6 Q" b  L
    {
2 {. @3 C6 d/ s* \        if(0 < length); O8 o! D% U9 x+ L# z$ H7 v+ z
        {
6 r/ o% d" C/ d' v/ L6 Y' u            // 写一个字节到 THR
( ~( p: l* M5 u/ E: }# o  b; F% A7 ~            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);$ P# X- T/ A, Y0 l& a
            length--;3 c% B, ^) @; B  x# E9 z; u$ e4 k; B* s
            count++;
8 c- v/ X% c- p! q        }
& ~, M2 j! c( Q4 Z        if(0 == length)
/ S* k' f& j5 f' P/ _4 |        {" }: c# f, t+ Z6 d8 Z
            // 禁用发送中断
2 J' `' K% W: }6 |5 m& l            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);( }% r( y; M- P' ^- ?6 z
        }
; a* K! e2 w7 r- f     }
$ e( Z' c5 |7 w0 F/ Z" i8 ~我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以* y& @' o+ V' s) \+ e. B5 @
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
/ O# u: }5 p1 i  v那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:293 [/ _" K( _1 T7 a
1、存在所有可以访问的 RAM 空间都可以
7 |# H; L  p: c4 @" `% `- E2、因为每接收一个字节就产生一次中断 ...

  [& Z- l8 J. w2 C% }4 O4 m那下次中断是怎么触发的呢?5 v2 p/ H" G$ X+ w: h- \1 r

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:430 s4 j) l, _# w! R
接收到下一个字节

/ y2 ~% U/ Q; C没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
+ i2 u6 [" X3 R8 N1 `! Y
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
* D8 V, m. x. }0 C8 U; T没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?4 o2 }' y* b9 V* f0 l
...

( R+ O/ N1 R1 C" q手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦" H% G( \9 c' H8 t4 \, d

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27$ z4 L& X( M9 A5 ^7 O
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
' m4 w" [( K7 P
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33) \- Z" g, O% V2 c$ q& r
手动使能发送中断就会触发下一次发送

$ n6 Y2 S4 h# G+ W# Y: u您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43* A2 f3 |" w7 w" R+ t% u
您好,我想问一下如何手动使能发送中断?

  @1 X( R' V$ y! M; I2 l您好 不好意思回复晚了 ( c9 r+ Z" E* U1 e- m  w9 p
应该这样就可以了3 M8 M1 d6 h, t8 @
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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