嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问6 t4 |7 ?5 F7 G& D& u$ L4 v$ }. x
1.。DSP解算出来的数据是存在哪里?. B7 W$ s+ M4 S4 f& R1 W9 m3 L
2.。在例程中有这段代码:8 u3 ^& X1 ^/ g  Z- M
unsigned int int_id = 0;1 m1 f2 a, x- c& h3 y* J6 x. x. v
3 T4 F* k+ k3 ^( W# b9 S
    // 确定中断源
' T2 l( G) z, w. h7 S  W, N7 Y    int_id = UARTIntStatus(SOC_UART_2_REGS);
1 ^2 ^$ a; ^* O2 A
: T5 ?" |7 ]5 T# S$ N& ]7 |    // 清除 UART2 系统中断
! r6 [$ [; L0 t9 `/ j& c  d" |    IntSystemStatusClear(SYS_INT_UARTINT2);
  Y/ c6 A% F6 j) N3 z4 Z; N1 o# K1 c+ A/ ~1 |
    // 发送中断9 C. X9 [$ N7 E* w% j  R; t
    if(UART_INTID_TX_EMPTY == int_id). H4 L3 J, v* a* e$ F( K2 w
    {
/ `# y. m! u4 B2 C: ]- O        if(0 < length)
& p, E( N. a5 Y9 r8 `        {
* S+ {% p- f, N! L/ n% H! F            // 写一个字节到 THR/ N. h5 N6 ?) |: K$ G  H4 C
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
; b8 d( _' P- C. o4 c/ n            length--;
' B/ t% J) p: `. `. u+ V& F            count++;6 k0 k; G: E: P& z3 G  r# w' e; {/ H
        }
( Z! l& E2 c2 _9 S9 _' p        if(0 == length)
  o- ?9 ?& W/ Y. d4 ^        {5 H, X. D! B" Y9 h$ {0 N; u
            // 禁用发送中断# S+ X5 X- j! B  M( W* E
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
' ?- N0 q7 h) i        }, @' {6 ~" K3 y2 b  [/ `
     }4 }7 ^  }" q, c
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以) {9 E! D0 N1 `- \! s6 M  ?) {# l
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
& a2 z$ v3 C+ X; d0 o5 g那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
# |# n" |+ R  y$ m# F1、存在所有可以访问的 RAM 空间都可以
2 n# S0 _" w/ n& I# a2、因为每接收一个字节就产生一次中断 ...
0 ]1 M0 ~7 k( P. _+ U# ^% _+ y1 {
那下次中断是怎么触发的呢?) |' e, ^* a! d3 i" ?; Q) o" r- l

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43  c2 {( Y4 c7 t  @) p2 Z
接收到下一个字节

6 B& i$ a% {  Z* Q没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?3 m+ r9 o( j/ ]& Q

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43& M5 e5 h/ w* w& t0 z7 Z
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 m6 ^) ^4 o" ^0 g/ }
...

2 W( C# e- r9 K$ R手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦( d+ l9 z" p+ ~, J3 l" W8 |* a

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27# D+ P& B& f, t! h* k. _; y
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

6 v" _3 ~/ q; L+ w你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
$ v+ z# F1 x# U+ L手动使能发送中断就会触发下一次发送

& j& m" d2 m9 x: L4 _, Q# b, V您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
" P% Z, m5 |; R1 E, U" U: W1 r您好,我想问一下如何手动使能发送中断?

( M) V+ D: R. w& }3 R! J您好 不好意思回复晚了
+ s6 r7 Q, ^+ }4 O& w0 m, {应该这样就可以了2 l% h: P$ M$ S% S1 L: q9 }0 H
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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