嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问2 F9 w4 e% x2 ]7 E) t
1.。DSP解算出来的数据是存在哪里?
1 s! e+ Z8 U$ q2 |; q- r2.。在例程中有这段代码:
( \! ]: \# z: G: u: V9 W+ X unsigned int int_id = 0;0 Q0 e$ Y- S. F* g" X6 o9 u
" j' V3 S3 a; B$ c( L
    // 确定中断源: k, O5 P' u# \, ~& |
    int_id = UARTIntStatus(SOC_UART_2_REGS);
6 O$ K* R1 i4 Y) J3 E/ ^" H: k2 D9 N" i# s' l- |" t
    // 清除 UART2 系统中断
/ r" T$ S) L$ j% F) B    IntSystemStatusClear(SYS_INT_UARTINT2);
: E: [3 Z5 C  j+ H8 U0 _! e& k" D7 O- p, Z
    // 发送中断5 i7 v! K1 M: L! k/ \1 L! e
    if(UART_INTID_TX_EMPTY == int_id)- \: O6 |4 r4 |2 p
    {; H- _. B8 m8 [, M$ a
        if(0 < length)* j; ]% v1 V+ c7 E; F
        {
. @. q, R% W- D            // 写一个字节到 THR' q: H: f3 A% b" P" C, D. K% R% h& o
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
9 {$ s; T+ E- [            length--;
" ?$ N8 c2 }" K            count++;
4 ~8 P5 [$ i) B& Y2 ^* b/ }        }, v% i% w" R% M0 B
        if(0 == length)
- J' H& [* ^) J% u: }- u# E5 t( X' i        {% e" X4 j/ t) F' G7 s
            // 禁用发送中断
1 D9 y) ~6 h/ Y4 ^$ r            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
) I! i6 U1 b& ]4 y# n) ^& Q        }
7 L7 r& Y% m5 ^' d7 b6 M; l     }
" j8 E* S! k6 l6 Z4 O5 m" k2 @我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
# x$ n) K. B) h) p4 k" v2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
( ]7 O  w/ _" `* ^那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
4 o5 k7 I5 x3 {9 j& j7 |# f; X; Y1、存在所有可以访问的 RAM 空间都可以
: W( B6 L8 d5 V  i% K2、因为每接收一个字节就产生一次中断 ...

5 F; o* S. L8 \% \那下次中断是怎么触发的呢?
: g# a, @- d$ c7 h
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
7 i! w6 w. L+ C/ w* \/ p接收到下一个字节
  R* }$ d9 a; {
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?( C& U: v0 K2 H& E7 `' B& e9 C

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
, P5 V4 G6 E& L) v! f* J! P没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
. L/ q- f. N' x ...
  [5 o5 S* j8 x  g
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦! V' @) \; a0 M& f2 q7 k* T

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
: T# N) F3 V: k8 ^' p你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

, Y* }3 {0 X, q7 z' P  t你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33! G$ {. |, b9 u) _; F7 x8 A! d
手动使能发送中断就会触发下一次发送

7 p7 D7 q% i8 z) ?4 _) C* N8 J您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43$ J2 m. J# l3 D( z8 r: V3 Q
您好,我想问一下如何手动使能发送中断?
7 v8 z, c$ \$ E" A) o7 b0 n4 A
您好 不好意思回复晚了 , y+ G  G1 @9 i& `/ ?
应该这样就可以了
( F: ]0 t3 r, R    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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