嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
9 L* Z; s* z( Z1 I7 Z1.。DSP解算出来的数据是存在哪里?
+ n, i( l) h. H2 v" t2.。在例程中有这段代码:& L; u" _: W* C( i" H# @
unsigned int int_id = 0;
3 x3 T) |( @# H. G( Z7 Q
9 z# y% V+ E  d7 Q! ?    // 确定中断源
0 V6 w( `7 R2 t7 f5 |0 W1 g: ~! R/ I9 v    int_id = UARTIntStatus(SOC_UART_2_REGS);& j8 Z" k& p- u1 n2 o$ ^
& J( l- ~3 M/ l, c" A' h5 P, N/ r4 E( S
    // 清除 UART2 系统中断0 h! _8 O$ V9 |4 e, L7 {5 C
    IntSystemStatusClear(SYS_INT_UARTINT2);
6 a" n" J# l% j: R: C- n: `0 k* o1 |2 f- e% d6 z$ O2 y
    // 发送中断
4 r- A4 [' q4 ^  G+ g) i5 _    if(UART_INTID_TX_EMPTY == int_id)' _) @% B0 N( z7 q# R3 b
    {! b; S. q' p/ @6 [" x8 }6 g9 p
        if(0 < length)
2 E+ z. k/ {1 V$ {0 B        {7 |3 w3 p, x1 s* u9 T( D
            // 写一个字节到 THR
" H4 _6 l# l2 p5 Q            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);  P( b: y; t3 G' m
            length--;
' c/ C: }6 }/ `4 r            count++;
: ?% i, u& J# }) X; j. w/ T5 ~4 ~  |        }, t! G3 Q9 i* \+ o* A9 Z( \1 H$ `
        if(0 == length)5 M$ M0 a8 N& x" _) K1 p
        {2 Z4 p: K. g  U. j, p* u
            // 禁用发送中断& w$ u) c* g0 _6 w* Z  K) G8 c
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
. H8 D2 H  W) ?- k- t+ U+ u        }
  }  N7 g" X  Y( j8 B$ Q1 ?: ?     }
2 r) Q' l6 U, l我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
9 P1 s! o# W% u) L/ U6 S2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 + A; c! ]# \! ?$ n2 |: O
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
/ d5 w' G" E! k5 u  @1、存在所有可以访问的 RAM 空间都可以
5 K5 e* m% X. G, i2、因为每接收一个字节就产生一次中断 ...

& I2 A/ d- f- D5 b+ h5 n# ^& q+ i那下次中断是怎么触发的呢?
3 z1 d0 S# Z0 D
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43' A, j" r' T1 V
接收到下一个字节

/ B1 L& ?+ c+ K9 w- Y没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
1 w2 e: ~2 |5 V1 ~$ f8 `3 e+ _# b
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43& `; T4 m, t9 ?( h8 c2 K' b% x8 E
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?$ {4 E7 R% X; t/ d$ \
...
. ^6 n/ K# Z2 X% {6 o( _) ~
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦( m: ]5 Y3 p* Y$ O1 K0 u7 f

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
/ \' C1 u! H, y4 D* v你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
+ W: O0 X- ~  d- J9 [
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
- @# H. N4 ]  W1 |; s1 j手动使能发送中断就会触发下一次发送

( `% }2 c; s" W- V; q! Z- E. ]您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
! D/ D4 [4 \2 X1 ~& q8 J您好,我想问一下如何手动使能发送中断?

' k( ?6 Q7 p+ m' z  \0 B! Z您好 不好意思回复晚了 % p' E( D  m. ~4 B
应该这样就可以了, c: W7 S% C" W2 A
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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