嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
' `" P' a. k, g7 n& i0 n1.。DSP解算出来的数据是存在哪里?+ }+ a  q2 O" f5 b
2.。在例程中有这段代码:9 z7 R1 o# A& Q7 k1 }
unsigned int int_id = 0;
% k7 f* p2 I: ~5 I) [) q+ R0 X. ^- @, m3 @9 z$ a
    // 确定中断源% c" z+ i- Y9 }$ q- E1 c, s  i) _- H, a; M
    int_id = UARTIntStatus(SOC_UART_2_REGS);4 ], A/ ~# M$ O0 S8 K
5 B2 ?* W8 T- A# G
    // 清除 UART2 系统中断! |8 ^5 b9 g5 {4 l" ^
    IntSystemStatusClear(SYS_INT_UARTINT2);1 K9 X! @% X8 m
2 c6 U* k0 q# k, Z
    // 发送中断
5 |$ h7 }/ N+ h* }. z- J! q    if(UART_INTID_TX_EMPTY == int_id)
3 C" {3 W* E' o7 I5 ^' s    {) ^+ p" Y- {4 j- Y
        if(0 < length)& w# A* o5 e7 I" P
        {8 g" w/ P+ Z) u2 `4 X
            // 写一个字节到 THR3 Q  e  }+ `) I1 \/ z
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
" E9 _2 I# i- y/ J( G: G            length--;% \5 s6 P1 f1 A; k8 a& {! M
            count++;4 v- e! K4 i! \6 z
        }2 z' S3 l' H- H/ s5 k
        if(0 == length); v$ }' B; h# m: L& i: S
        {
3 Z+ a$ t! _4 h+ b* W7 q            // 禁用发送中断, k/ e4 ^8 Q* K$ V9 k  n
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
# S. I' m  }- d" ~$ n$ T+ a, c        }
2 j" [* J+ I# o0 N" u6 c# o     }
+ t3 C# E! |1 H7 T: l我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
6 t# E7 w/ ^+ i, C8 O2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
0 D  r" q# L) s2 z, n! \9 R那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
2 N; R  y2 a3 U; o) `' k' G1、存在所有可以访问的 RAM 空间都可以
! y' v1 G: |) o, b3 D$ r& }2、因为每接收一个字节就产生一次中断 ...

) L, ~  K+ }4 X. H5 i那下次中断是怎么触发的呢?
! ?/ b6 F* ~2 x; N/ ?4 R( }
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
* J* P2 F# m: |0 R1 n% W4 v接收到下一个字节

% h4 R2 O$ F- |) s: S4 Y没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
- U, q6 N5 ~' V2 E
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:435 O: Z1 A& k$ {& z; y
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 }$ G, e$ f. c2 Z
...
- a  R2 Q* M  H- j7 j$ K& Q
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦4 K* j- w  d, g: U

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:271 i/ y- l- C& K5 w; v$ O
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

0 {% Z& Z/ g0 v7 w: g" c: A3 @你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
4 t/ p; B; f2 F手动使能发送中断就会触发下一次发送
8 S% c1 y, ^: [. L" A) U  t% T8 l
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
- P  o* r- l1 R$ M1 ^$ u您好,我想问一下如何手动使能发送中断?
# L& J2 @! r" i  R
您好 不好意思回复晚了 ; n* f' Z/ y2 o$ J: o1 m  G: }
应该这样就可以了4 }# U/ }6 ~% k: ^
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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