嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
! }4 z3 Q$ p' F/ p/ W3 G1.。DSP解算出来的数据是存在哪里?7 }( y4 q0 v  P+ a9 a) D- n
2.。在例程中有这段代码:
/ m2 b' n: ~* S- ~$ J& L8 I unsigned int int_id = 0;: y4 K6 J# E% i' H
- B. H2 _( t6 C  a1 C6 A
    // 确定中断源* O9 G0 O& f, j0 s- s+ k" V
    int_id = UARTIntStatus(SOC_UART_2_REGS);
5 u3 F5 c; h: Q1 z/ }
& n' e. z* O2 y( v    // 清除 UART2 系统中断) |. j! G- K: A% J
    IntSystemStatusClear(SYS_INT_UARTINT2);9 @$ s& A4 r  Y' Y
3 ^/ n) v1 [3 c6 N. b
    // 发送中断' A  m& K/ c. ~$ F
    if(UART_INTID_TX_EMPTY == int_id)
% P+ z$ d/ Z! `9 f! p1 d0 Y, B    {
4 f4 W6 Y  e  \, L( ]* z        if(0 < length)) u( a& C2 G2 ]
        {
! J7 J0 J- L4 L4 S            // 写一个字节到 THR, o. r; Q( j/ R  h. j: `
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);/ U. n- ]# d/ v8 P7 z8 U
            length--;7 \" u% T/ x; V6 |: q" X% H
            count++;/ b6 J! g% C# ]5 k
        }8 E' \9 ^# O! G& B& B  g3 Q
        if(0 == length). j: I4 `# Z, [
        {
6 v6 `+ D  G/ d- S9 c; C6 g! [            // 禁用发送中断
+ d2 q( u5 ^- R. Y, `' f            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
" @, P0 x/ h- Q8 l        }' v0 \6 L$ M+ y. }- w; _/ b
     }' s2 h) e; `) C8 b
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
* [# R3 B' w- a2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 2 b) E9 G7 ?- d
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29/ _  h; K2 w( s6 {& l' \
1、存在所有可以访问的 RAM 空间都可以; h, ?; z$ `9 v% l- R
2、因为每接收一个字节就产生一次中断 ...

: U0 e7 t5 p: V$ k' z那下次中断是怎么触发的呢?9 G# g9 f; N8 ^2 ], i

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43) q% z+ \0 ]& K- y* m
接收到下一个字节
; w) W" a) r3 G& X
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
+ W$ p+ {. B* x4 |6 V7 ?
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
* l" D2 p  H. `+ x3 H& q没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
3 Y* o/ P9 I6 R! I4 B: f1 |0 ? ...

. H6 s2 {" h/ e& ?' o& w( q手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
0 V0 k9 U9 j0 [4 C% g7 E
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27, y- {; s0 E, W  D; |! X7 F- E
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

+ I% U( @" l0 @5 P1 b. \你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33% C! m" C  `5 b9 D2 U
手动使能发送中断就会触发下一次发送
0 q3 Y) U  K* N! k9 \
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43" r; G& V+ n. Y% ^7 I+ R
您好,我想问一下如何手动使能发送中断?
3 X+ f" c: ]% j/ ^+ I" ^+ q
您好 不好意思回复晚了
; W) B2 o; u; H. \) y$ I应该这样就可以了6 k- \. q4 N; D+ b, M
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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