嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
5 L  j' |9 A$ y( l  g% D8 \1.。DSP解算出来的数据是存在哪里?
, v- A" o& r3 Z2.。在例程中有这段代码:" d; t0 w- q* U# ]6 v
unsigned int int_id = 0;
# @6 p" `' g+ d! Z( r8 O" R9 z* ]. m+ ^8 B* w; `. C% Z) \/ k
    // 确定中断源
$ [- ~5 v7 g6 b, a9 H: A1 d    int_id = UARTIntStatus(SOC_UART_2_REGS);4 Q" G" Q& I. @8 D

' h2 p3 |  i" v1 \8 n2 U* ^# |7 y    // 清除 UART2 系统中断
1 C6 l- l4 O# R) G+ o  V! a    IntSystemStatusClear(SYS_INT_UARTINT2);) |4 G  j1 X5 d0 Y; t
; g+ p( a) s. C; H/ {
    // 发送中断. `1 `! c, ~0 `9 s: u( u. k
    if(UART_INTID_TX_EMPTY == int_id)( ~8 |. U( m: S+ k
    {* Y% g% A/ {& `
        if(0 < length)- M# Y, e. b! O7 i6 T- E2 Y
        {- O) i; O' a2 A# T/ S* h
            // 写一个字节到 THR
) s5 F2 I- a( D0 F, M% b; M            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);) t2 z8 l* \1 h& _+ }
            length--;) A7 `9 P& R$ l( E. V6 V3 G
            count++;" s! F& @! O( S6 {) a' k' x3 s
        }9 \5 H* ?  y9 X) _8 k
        if(0 == length)4 _& g% h0 Z" W' ~0 U
        {8 ~. y) V; }. p+ v, f
            // 禁用发送中断5 u9 Z# F' I" B  ]( Y
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
$ k: o& O! G# G) N: a        }" [8 S% Q8 M; a) F0 }
     }
& n  |  t6 G, a我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
2 \# f1 R, c" C* f) _0 h+ w) x2 j2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
+ y+ n( ^. M" A! [- e6 x4 _那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
0 c. d! W% M* V2 ]/ P; H1、存在所有可以访问的 RAM 空间都可以
+ T0 d% f! V2 v7 y7 d( Z7 _2、因为每接收一个字节就产生一次中断 ...
) ?3 I/ u$ {! {
那下次中断是怎么触发的呢?7 B2 F: M8 n2 u, }, h

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
; O8 l' D" Q' C3 B( K接收到下一个字节

! h4 C3 q# Q4 K6 X; G- v没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?3 A  Z9 I( \3 c8 b/ ~7 Q& w) v

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
; j7 H2 ^1 }& O. l" \# x$ \+ C没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?  `% q: J3 L1 R" r; V
...

- m! ~+ z1 ~. q0 |- Q% U1 ~/ @手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
* S( S: I6 ?: r, G
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
5 ~0 E" L( z6 S# }你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

- |; p, h" O: D! a, j1 ]1 `  F你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
8 w2 x& }3 ]- x8 I- F# O& }: `% e手动使能发送中断就会触发下一次发送

% P, t+ ^% {0 x. r" `您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
; J+ L/ |" \& {您好,我想问一下如何手动使能发送中断?

; ~5 x, @' ?5 T; K% ~3 \您好 不好意思回复晚了   Z3 U/ Y$ t$ _. n+ C' a5 [
应该这样就可以了1 H# Z. L: Q! e! ^& G+ G. ?
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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