嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
& w) C% g) a' O! z7 W: h9 B6 [  D) O1.。DSP解算出来的数据是存在哪里?
  L. d2 l/ z9 J( I3 \3 X+ A& t. e2.。在例程中有这段代码:
7 B. o* J) ~) r unsigned int int_id = 0;! T2 Q9 D% S% W6 N
: P6 x* F% V: t3 ]
    // 确定中断源  k' v3 b9 O$ D0 g0 o" z* H% d
    int_id = UARTIntStatus(SOC_UART_2_REGS);
# u# ?9 c7 H$ H6 a3 J. t, O0 F* _% |
    // 清除 UART2 系统中断
. E. m6 d5 ], O- M5 D6 k' r    IntSystemStatusClear(SYS_INT_UARTINT2);) ?1 J, `& N) J  M  w" X" z

( F& P6 \, T2 b( ~5 h    // 发送中断1 [) o7 `. _4 x. j: b8 ]
    if(UART_INTID_TX_EMPTY == int_id)
0 u! Y3 Z$ k* ?; ?9 p    {
0 {2 M8 A) |; f% f0 \& v        if(0 < length)
% U" d/ ]) I& `, ^$ {        {
8 e; j$ c" J& b            // 写一个字节到 THR
% ^3 E  s' q  e+ x            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
+ T, x/ ]8 s* y! a            length--;$ ~; W3 I6 G; a' c; ?7 a& ^8 U8 X* w
            count++;) l* K( n& ^" L0 F# \
        }  m3 v6 `- y" G2 ^  ?* b7 r
        if(0 == length)
9 U4 ~3 k2 T. h) v% r- W( |0 l# X: n# T        {
7 P4 z4 O3 s) \, a6 @            // 禁用发送中断
6 O  }/ E3 W" J, |            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);8 t5 m+ |) a! O# D: p9 ?
        }- w) ]4 l& d5 a1 n; E6 h& L
     }
1 u7 T, R2 W  a, N+ Y- m$ c我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以! v) a, I  o$ S( }1 C/ B
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 + i! ~+ ~/ K( v6 y5 z3 u3 o
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
) |0 |$ s+ W6 I. }: M0 O. u% d8 V1、存在所有可以访问的 RAM 空间都可以
6 E' C4 K) D8 K2 X0 L& i$ R2、因为每接收一个字节就产生一次中断 ...

, r  x) H* S0 w那下次中断是怎么触发的呢?( |! R) Q5 |( G- j6 p

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43+ R" M( L  {$ b, ?& |
接收到下一个字节

% o- L/ R) Z  T# z9 ]5 h没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?0 ~* i: W, S, b2 K5 d2 B

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43( n! t$ v4 X& U8 Q8 f4 H" ?
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?6 _- u- n9 Y4 W9 t% t6 F. E7 K. V
...
  y" n( A9 R. U# L" }
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
0 E" |: j- \, C, J
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
" @5 u0 @; T) z4 R' S( J你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
" o, w# K: _- q5 B3 x  p2 Z* v
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33% |* H5 E6 ]0 P" E9 p/ N
手动使能发送中断就会触发下一次发送
2 L2 F, w7 ~# P9 w
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: Q  |0 u/ w, R- b- s您好,我想问一下如何手动使能发送中断?
' s3 N& B( T" R0 [$ z0 O# A/ _
您好 不好意思回复晚了 ' E5 {: p% w# w, L* z
应该这样就可以了* n9 s, j) f4 L0 E. c# S$ j; A
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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