嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问4 V3 K4 s& U$ j" E
1.。DSP解算出来的数据是存在哪里?* Z; h' I. o# J
2.。在例程中有这段代码:
! m9 z8 m1 ]8 G% _& u% f unsigned int int_id = 0;) N: m5 M+ n1 o4 }
( \! D3 @: m' s5 T3 y+ Z/ s  C, U
    // 确定中断源- O- _) z" }6 o/ g. r/ ]
    int_id = UARTIntStatus(SOC_UART_2_REGS);
$ P. x; D& `0 v7 N( ]+ g2 b, Y# w; O. f( T0 O
    // 清除 UART2 系统中断( h7 n) p5 l1 P( ?# y/ ?
    IntSystemStatusClear(SYS_INT_UARTINT2);
8 |9 K" i# k2 w' m; d+ |/ V" Q$ }  ^
    // 发送中断
1 Y) _5 w  P% L    if(UART_INTID_TX_EMPTY == int_id)$ g; Y7 A/ g4 `8 e
    {: x$ C" Q( E  `; y' B$ h# ^8 `
        if(0 < length)7 m! l1 i: J" ?$ ~& y2 E4 Z# b$ ^
        {) e" ~. A0 \: r+ Z# e( p8 j* u
            // 写一个字节到 THR
/ h8 z% E5 u6 o: t" c  t& I            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
( Q+ l3 A9 z: t$ g            length--;% Y) d7 @! g6 i$ K
            count++;8 v/ {: w! W, d' X: Z& s1 l
        }0 T$ X  j' @% R3 R  f
        if(0 == length)- X' i/ [3 w# L' q( y) a1 G; F
        {4 f$ s! t% S6 M4 h3 F
            // 禁用发送中断# B) t) q: ~" m2 V' f4 c6 S
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);. D1 I0 u: m* p
        }% g5 C8 g5 U& Z% B2 ^
     }
. ?% S; a, S' t4 e我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
; w5 }) Q$ A) A! a& Z! r) q9 A' r2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 ) z. I. ?$ d) g
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:294 f& x0 i) y" {/ }
1、存在所有可以访问的 RAM 空间都可以0 U  Z% [& h) Z4 J5 g. Q8 M2 r
2、因为每接收一个字节就产生一次中断 ...

+ F! E/ J" n2 J' k9 \3 X那下次中断是怎么触发的呢?, @- s: j, p9 H' Q( Q

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43, g( `8 J" u' h6 v" c5 ?
接收到下一个字节

; _* X9 i8 J. s9 w# b7 r  V- D没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?! N9 }7 j0 o) `$ G7 {$ G

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
% @8 t' r. H/ Y$ c5 e) T没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
) W  H8 i# A1 U6 r8 }- ^ ...

0 `# b# M* I+ b2 ~# I6 |9 ^手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
% V+ w, @6 P3 a  ]) F& }
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27. Q% y" h/ I- V! Y- e% x
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
2 k' U8 C" b$ @5 k  o) ^7 L: S
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:336 R1 I' j9 h$ R) V3 K8 {# K
手动使能发送中断就会触发下一次发送

. |; z, U  t% |5 N' [, B您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: X, q* S6 s" n' q8 N您好,我想问一下如何手动使能发送中断?

; [/ S/ i( c' @" G9 w5 a) w+ _) l$ }您好 不好意思回复晚了
; z; @4 d4 x. n2 z7 C; U1 p# R应该这样就可以了+ G; Q2 w* f0 A! y
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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