嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问$ t2 _- v9 b4 u; ^+ Q
1.。DSP解算出来的数据是存在哪里?, t" [- t8 e% ]; e6 y# C: h
2.。在例程中有这段代码:8 @. X- k& C' H( i! @
unsigned int int_id = 0;
/ _5 z; c3 r4 F9 Z. T! Q7 M0 D# ~& E3 W6 f# {2 ?% m
    // 确定中断源
, {9 x) h& g" \- L) n& S7 N    int_id = UARTIntStatus(SOC_UART_2_REGS);
0 R0 z5 ]9 j7 K7 m
) {, v; T  y8 W3 U' `! I    // 清除 UART2 系统中断
( C/ p+ P* D" m  T* _/ P) K    IntSystemStatusClear(SYS_INT_UARTINT2);; S$ M# `3 ^! L4 R$ A3 {3 y& o

$ G8 O4 p) c+ v! l4 o* R    // 发送中断
! e- E' \. w. V# b3 i% p$ ]    if(UART_INTID_TX_EMPTY == int_id)
. z/ Q+ W; X) j( L; E  G    {& s0 g! J. b+ j0 @
        if(0 < length)* M4 u4 y) M- i+ |5 d( T5 r( @0 U
        {
5 f6 D/ d/ |' o            // 写一个字节到 THR3 r) \9 y( t! V) |& D
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);  v8 r& K1 h, h% z3 H3 M, i2 y% {
            length--;7 h2 [7 R: I; {4 P! U; Y
            count++;# j7 d6 a; I( S; W# ]
        }0 \: M# y. E9 f
        if(0 == length): ~7 n; D0 J9 g3 o9 Y" H
        {
( A# l" a: O7 o  X2 _7 ^            // 禁用发送中断  r  }0 f( J5 M9 E+ c
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
  E/ I; M: M- d. `: H        }% d! n! R" G/ j$ s0 @0 T2 n& m
     }
8 ]+ N' y9 _! K; @2 q  Q' E9 I我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
* G4 P( {* p! }: X1 L+ F. q+ K/ N7 \$ C9 W2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
5 S% {; z2 a6 t& S那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
8 a* {6 J4 Q5 T( a* f$ T) Z1、存在所有可以访问的 RAM 空间都可以+ g' Y$ k; B5 [) j
2、因为每接收一个字节就产生一次中断 ...
* I* ]% l: ^% B9 H. X6 S* t
那下次中断是怎么触发的呢?
; A: @4 W7 k* |( M! o
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43: p- D/ h$ f8 Q9 w! \& h) i/ s  N7 L
接收到下一个字节
  F3 [- u% m% o5 f: V8 W9 x' D
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?. H( j0 A' \* _$ f

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
. ~% j% ?+ @3 t4 _没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
7 {0 x$ J* z, h1 e! f/ J' K" q& J ...

. ?; I: Y3 A8 {6 ^1 m; h' M) Q  K手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
6 \' k! z( ^* S
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:278 N& h4 s! Q3 ?2 t0 r# w
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
! Q. @" p2 C* o# Y; {
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
7 S" m+ O$ B' b: A3 c% s( F# f手动使能发送中断就会触发下一次发送
$ f5 q! c# h' n
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43& \2 H5 z$ j; b4 E( M* a* O
您好,我想问一下如何手动使能发送中断?

* ^( c" R( u7 b; ^! V  V您好 不好意思回复晚了 . l6 }/ J; i; A# u
应该这样就可以了
4 m! E+ A+ I' j) i, A) ?    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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