嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问3 r1 U- n7 k$ Y1 H' i& S" [2 Q
1.。DSP解算出来的数据是存在哪里?
( T0 G" }7 _  X! I2.。在例程中有这段代码:
' w: i0 Z3 v6 U: r( H, R8 G unsigned int int_id = 0;. B! }3 \4 \  Y+ O
' y, s5 x$ v# V; P- L
    // 确定中断源
6 {/ m, ]3 h( I7 ]/ w) T    int_id = UARTIntStatus(SOC_UART_2_REGS);
  G+ k7 b' G* R! T# U1 W$ i2 ]9 R" h& B( n. ]
    // 清除 UART2 系统中断
7 g" T% y2 I& G# A& R    IntSystemStatusClear(SYS_INT_UARTINT2);
# R5 k6 ?+ [& a7 X# }& g: N$ a' a& a$ @4 `8 a6 x6 J. p. D& ^
    // 发送中断, V$ S' R% S# s; i8 D
    if(UART_INTID_TX_EMPTY == int_id)
; A. y. B9 x( x    {7 W( g3 ]5 K$ ^- S* n! g
        if(0 < length)
; A) g- U8 z9 X/ g- K: B# W4 Z+ `        {
& ~0 C. @  t/ j: Z            // 写一个字节到 THR- j% ?2 u4 I" H, S' b0 X; x
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
0 a9 `; t5 P8 }; W7 j            length--;! o: i" j3 q- R; p& l) p
            count++;! A& ]% M  o; H& ]( J/ r" C
        }
: w! c7 o/ H) ^        if(0 == length); Z' v0 C5 L" Z( A: L+ h
        {
* U* y) |1 w' P) v4 G/ n, E- y6 [4 e            // 禁用发送中断
% X( E% X8 I; h& \  `6 {5 D            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
5 D. U. B$ r9 x3 M! o% J        }
; Q; e  b( s) Q     }9 J* w9 b8 a0 M: `  U
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以- d2 z5 v' w, ~% j8 p
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
6 Z2 a+ S$ [3 d  s* D. f那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29: t( U1 H8 M7 @3 m1 p' S  V4 i6 x
1、存在所有可以访问的 RAM 空间都可以; N: N8 \/ b9 A3 `; `* N
2、因为每接收一个字节就产生一次中断 ...
7 K8 Z# I/ O$ s' Q/ c4 R0 ?7 Q& S- f
那下次中断是怎么触发的呢?
/ W2 K# v' W* w# e! w& W# u
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:431 L$ N, V8 B7 k( y- M! L; @
接收到下一个字节
& c/ b! Q8 z$ U( H! y9 v, v/ J6 n
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?; m7 D3 K6 q& P: m

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
, k* V2 @- w2 g: N没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
' ]% B/ u; r5 _+ [% O ...

& b! ?" [: \& j手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
6 [) c) |( R( X  A0 p( C4 d+ r
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
- J9 B, C* I% X8 y; ]/ b你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
9 R  l5 Y* C" p/ B
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
; {+ p) ?# |$ h4 s# {手动使能发送中断就会触发下一次发送

0 V8 U; u* M3 Q: w  v您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43# Q' A, E5 ~% x
您好,我想问一下如何手动使能发送中断?

/ ], W9 h4 h6 e+ c! n  g您好 不好意思回复晚了 - A, K- o( {7 X) t+ s5 D/ U0 R
应该这样就可以了
, Q: b: @; k) U& ?9 x    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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