嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问; T0 q& p3 g4 M8 ~9 ~
1.。DSP解算出来的数据是存在哪里?
/ E& D( p$ `6 m" N" `2.。在例程中有这段代码:+ J7 {5 o1 I& h/ R
unsigned int int_id = 0;
) c3 \' U7 E' N6 O: Y. B/ r0 k* g1 ]; Y2 Q" v
    // 确定中断源
1 P" e9 y% t7 N) A2 w5 F    int_id = UARTIntStatus(SOC_UART_2_REGS);
0 s( ?! N) A0 G4 p2 d9 [0 A. m5 D4 r) e
    // 清除 UART2 系统中断
  O7 E4 m* }! ]" N0 s8 C    IntSystemStatusClear(SYS_INT_UARTINT2);
0 H# Z4 n( T9 `' E
  ]* j7 w9 O) p# l# L2 M; W    // 发送中断2 U' k, [2 u% [, E
    if(UART_INTID_TX_EMPTY == int_id)! q) o) F/ g" n: N/ l" I
    {
- |, C+ t. B" q  \! H        if(0 < length)
" E# c- I# l1 |7 p& L        {! t) p- J) O0 o3 M! k7 j6 Y- Z! m) O
            // 写一个字节到 THR! N- q( I, X7 Q" v) x% B
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
3 _+ C( `% c  W            length--;
7 {0 k6 m- N& {; Y: b; U            count++;
& y! u( c& H$ n        }
; \' [: W# y, W4 R" ?        if(0 == length)
1 K' u  C3 {; _9 _" Q$ k( [        {5 }9 Z) [1 w9 V3 d
            // 禁用发送中断
! n2 Y6 u3 ?( V; @7 V. u            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
: ?. L4 P( P, V; Q        }
2 c6 d9 O+ h5 p, @1 f     }
6 c+ q1 @9 u+ z1 Q* d% \0 \我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以' d7 p) ?7 k* s7 |7 a
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
/ @$ D" H7 h2 [# Y: n那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29; t$ q; J# _3 l- t+ f9 s
1、存在所有可以访问的 RAM 空间都可以0 ?  J- x  ]$ ?4 ?" y
2、因为每接收一个字节就产生一次中断 ...
6 D$ ]% B5 \8 E9 o3 v
那下次中断是怎么触发的呢?" W& S: l6 Q9 ~  z! N& @( u

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43) k! q* H) N9 d$ p/ N0 R4 s+ ?
接收到下一个字节
- ], D3 _: K$ U& O
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
) h& N( L! i# g
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
7 {% f7 V( u2 l* e, `; o/ A: @没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
6 C1 z4 c) R8 k& h ...

2 v; F; K! T( M" m* h. ?+ F手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
) l  \  n  v: K4 w+ ]0 d! X
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
8 Y* c! n/ k# ^& J3 ~! g8 g你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
# f6 I/ |4 `+ p6 w+ u: t
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
. l5 \5 j- }; C% d: S: n) \# k手动使能发送中断就会触发下一次发送
' H& Y6 ^- y8 l4 a1 [2 y3 k
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43: c# |* T! [5 |: T! W
您好,我想问一下如何手动使能发送中断?
( d$ c& \* E" w
您好 不好意思回复晚了 0 z3 h' O& r7 U, V' H" W% R
应该这样就可以了% X4 ?- l  K: Q& J9 T9 x! G
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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