嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问$ D. R1 Q2 a. Z8 b  o
1.。DSP解算出来的数据是存在哪里?/ _; p! A" A9 d8 v& S
2.。在例程中有这段代码:( R. H9 R5 Y- l. F, c/ n
unsigned int int_id = 0;) c5 x. W& @+ F; {, u8 A

# X, N# b) \7 P( K0 }  G/ c% b6 U    // 确定中断源: ?( {8 Z6 d, P
    int_id = UARTIntStatus(SOC_UART_2_REGS);
) H7 f2 \* |0 V, d3 F
; ~  P# C- E6 T! ], l    // 清除 UART2 系统中断9 W0 g! k; u* ?  C! @+ s
    IntSystemStatusClear(SYS_INT_UARTINT2);, g2 }( `8 I8 F8 V

) T# s5 R- ^' |7 S& Q    // 发送中断
; j9 N% b) f4 A% u; U    if(UART_INTID_TX_EMPTY == int_id)$ b+ Y& E+ ?5 u) ^( p  [( K
    {
, V) O2 c& h( l, }3 p% ]        if(0 < length)5 U4 u) {. `0 [, s* ~5 }* _" I; S2 L
        {
( H+ h) a. l. H* G7 g            // 写一个字节到 THR- v1 Z1 t; ^! }$ E2 _# |( ?
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);; {! ?0 y# R4 z$ V, R+ `( [
            length--;0 y" p4 ?+ n+ I- e
            count++;$ Y' \; Z6 k# c: A: Q
        }
9 C9 @8 ~, i2 h/ z. \. R        if(0 == length). V- Y0 f, }$ _+ a& T
        {
. l/ Q: s$ `9 A. y  r, a            // 禁用发送中断
  C% x+ @7 t3 F. O* M            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);- i2 _) T% R; e: @
        }
, s; O; F: x3 l1 ~9 H) o     }
3 H( R9 k" B4 A) D2 b- `# h我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
! U' d7 _/ s$ O1 w3 f" A  _2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
1 Z7 E" q% k3 ]8 {" C2 K$ }$ J那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:290 y4 q2 z% C- B+ ?* D
1、存在所有可以访问的 RAM 空间都可以$ d2 N" i# n+ Q$ u! \, e; c
2、因为每接收一个字节就产生一次中断 ...

) E1 s* |- G& S# O) P4 _, P+ U那下次中断是怎么触发的呢?
; C0 L6 B8 ~6 ~
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
9 i1 ~' y1 B/ v! W7 m/ N接收到下一个字节

" f' ?' [! G& p  C  W& I/ M没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?! s" G% y* k) m; O+ ^

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
$ g0 W. Q3 ^2 F' o+ F没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?1 H9 v3 {6 P- S, h" \2 p
...

; |8 J7 H7 M8 l. ], D/ u; v3 G" z" a手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
9 ^/ Y7 W& x. g7 V: m
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27& R4 m& @# x9 B7 X0 I6 g. \
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
" r* M/ L5 P$ T3 }" f5 _
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
: N6 H3 w; V5 t. g( [" [手动使能发送中断就会触发下一次发送

; u& Z5 V4 a1 C1 H- p" s$ C您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
1 J  C9 C, D; n; o您好,我想问一下如何手动使能发送中断?
; g. f) @, d7 E  [5 [' N
您好 不好意思回复晚了 + s" r2 i8 L( A- ?, A! C
应该这样就可以了$ ?2 q4 b5 L7 {5 n( [; l! `- c
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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