嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
$ n, q& @  E0 J5 u. T1.。DSP解算出来的数据是存在哪里?0 n" O% [: C; Q% z7 k" r7 b2 W. @
2.。在例程中有这段代码:
1 U3 T' x3 D2 y  P: V' O6 q unsigned int int_id = 0;
' L/ ~" a# U( ?8 x+ Z/ O; G+ b# x6 U4 Z$ J
    // 确定中断源( c2 h# k) i  F, T
    int_id = UARTIntStatus(SOC_UART_2_REGS);
8 d, s0 M, p' F$ ^
6 T% f) U7 I. E5 }9 _6 a# r7 \% R    // 清除 UART2 系统中断! b2 L) o3 s! o
    IntSystemStatusClear(SYS_INT_UARTINT2);
9 x, [3 @0 h: H$ o$ n, C) L3 p5 |5 o
, `7 u0 z% A) z    // 发送中断
1 z4 V5 i% V6 u' }    if(UART_INTID_TX_EMPTY == int_id)) j3 _6 A0 E0 Z+ L
    {! p) T3 Q- P* v) [
        if(0 < length)
' u# s! f  \: t1 A8 g$ C        {3 `; R# {1 C* J+ L  l
            // 写一个字节到 THR% q" h! w# i' n6 E
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
9 i' O8 j& v4 ~            length--;
' _2 Y8 D5 \: r, r/ H            count++;
3 x( Q) x1 A( N' a" t- b        }
3 t5 r- y2 h2 Y& H        if(0 == length)! g. ]5 R6 B- g- l% {
        {
3 Z5 @, L' G0 l$ p1 P! p            // 禁用发送中断- F$ J/ ?, P0 _8 @" A
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);* Z: u& |& P. v* d2 w
        }4 E3 G# P: n' m3 H
     }
# i# {: k0 `  _9 u% F! [我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
, T& f9 A8 H' `0 m. H2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
' j! v6 U0 Y# e& r' K那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29! G9 K* i" z6 u4 k  Z
1、存在所有可以访问的 RAM 空间都可以
+ d$ H3 A: W4 ~2、因为每接收一个字节就产生一次中断 ...
6 V% e7 A% @7 G9 q2 ^/ N' [! i
那下次中断是怎么触发的呢?# N0 ^  z2 h6 f9 s; l& Y3 v

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
: ?+ `' a$ ]& q# s; x接收到下一个字节
) L7 y" J6 L: [9 _: y" l/ J
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
$ d# ?* P& Z. H1 @3 E* v" r) y$ `
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
% k0 v/ o2 l5 B没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
7 W2 P, E. |7 U$ G ...

6 k8 |3 g1 F" x! F8 u4 i$ a手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
! E# V$ ^5 @: X
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
" r. M7 |# E" o1 }你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

' ^/ K8 W2 z9 P. g你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
2 a  M) @  E4 b: a5 C8 g' b0 U手动使能发送中断就会触发下一次发送
3 B+ j5 R+ Z$ @' \# x) z
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:437 \* y( }- g( m9 s, V
您好,我想问一下如何手动使能发送中断?
) V& I+ o& Z2 H4 X' W# j
您好 不好意思回复晚了
( H+ E8 J7 l% U' x" @4 f应该这样就可以了; G3 s0 C# |. k- s; b: F' w
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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