嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问! g! D7 Z. A# p* l  V! e1 d
1.。DSP解算出来的数据是存在哪里?, j  e0 P7 a7 Y+ |6 d
2.。在例程中有这段代码:( D' Z9 [, _% @% k% \
unsigned int int_id = 0;
! V, }1 \& z( u" C4 K
+ g" X1 b8 [0 M8 ^    // 确定中断源
# P3 v) @' n6 ]9 e( d% l1 k    int_id = UARTIntStatus(SOC_UART_2_REGS);
8 i8 i2 S/ b( n" k- G" A" |
% u7 k, V" a* Z( U# [    // 清除 UART2 系统中断2 i9 m$ A& x( C
    IntSystemStatusClear(SYS_INT_UARTINT2);3 n  f. u7 a( Q( w3 k: h6 e

$ {8 t9 ?, K* M    // 发送中断
2 v/ J7 L' \/ Z, X3 i* s9 g    if(UART_INTID_TX_EMPTY == int_id)
% f  r$ f0 g2 e! N. d    {/ s- l1 W  `# T, G0 y# _' x7 w( U
        if(0 < length)$ n4 ~5 h4 N. e" s6 d! l8 r
        {
4 A; n; O0 L+ J; ?0 q            // 写一个字节到 THR
8 v5 Q9 b8 w7 {0 ]7 O: `( p            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
0 {) L( W5 F4 ]* C            length--;
5 }3 ^  w4 Q- ]+ _- ]( V: a8 J            count++;
7 r; L3 P+ K( a3 E3 _        }: G. A( Q4 k- N. J
        if(0 == length)# k/ Q  L7 i% i' q5 A" P
        {
# z2 P9 k( V! J            // 禁用发送中断1 v* H' m4 E( U: K
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
, U! M4 K6 T, N5 x9 B7 A  K        }0 W. e8 n- D3 I2 n7 ~/ j, [
     }
! C3 x+ ~6 H5 q1 n! D我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
  H' m6 |3 w/ n. u: Q2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默   r/ {6 x1 e1 ]* r, O" R
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:297 E& j7 ^# c( h; _1 q! d# y2 v
1、存在所有可以访问的 RAM 空间都可以: ~9 K0 _/ Q9 |
2、因为每接收一个字节就产生一次中断 ...
( z' Z& y1 X; m# n- t
那下次中断是怎么触发的呢?
8 H' }( z5 @) b7 ]9 ~+ B5 V
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:438 ?& L0 \1 C- `7 I. F: f6 s+ |
接收到下一个字节
( H3 \9 q; V3 z' x
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?0 s) t6 h" U0 s) q) l- R8 `

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
1 o  k& |% c8 [1 J' E0 a3 m没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
  u* m& r# r! X- X ...
) N0 n% l9 S4 x3 n% }( @/ {4 W
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
4 ^% l# d. ?+ S. \) K% Q3 j, b
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27, X$ U8 P( R- G8 b: i/ F( l
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

* E9 ]0 K5 u2 F! F/ \你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
- Z% |# ^8 J( H5 b$ [) J手动使能发送中断就会触发下一次发送
" ]5 E+ d' i- V1 v0 e, w3 H- C8 U
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
0 P3 _/ V5 _9 J" U2 d# X. I7 \$ q您好,我想问一下如何手动使能发送中断?

7 ~+ F9 Y4 d; R$ \  }& x您好 不好意思回复晚了
$ _( R0 N  `6 U" b$ I/ l2 v% i应该这样就可以了
5 Y0 t. m1 Z' W4 }8 Y    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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