嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问9 ?6 r/ i" E* W1 p. c
1.。DSP解算出来的数据是存在哪里?
2 T, O/ Q& W" e% s" U- n2.。在例程中有这段代码:; [* W. m6 n; [2 @6 p* m8 ~
unsigned int int_id = 0;  M$ z1 ~5 z  u. s7 C

/ C& h6 ~1 V( w    // 确定中断源
$ u. {( l+ O1 a7 c- U6 Z" }    int_id = UARTIntStatus(SOC_UART_2_REGS);5 M) \" T3 `, J% [  a5 ~) h2 P

, y* \7 u5 O$ c) s- [5 Y. O    // 清除 UART2 系统中断
! f, V+ E1 _, w    IntSystemStatusClear(SYS_INT_UARTINT2);) [( ?, S/ a" Y
4 ]7 ]) I# s4 }  T9 |
    // 发送中断4 p/ Z5 `; y) A2 c8 y
    if(UART_INTID_TX_EMPTY == int_id)+ h7 e; Q) V' o' b# w' Y. q6 ^
    {% B6 @& a" R8 }% w9 a$ J% F
        if(0 < length)
) @! p- v! Q3 a7 w0 m        {# h& U- @2 G% t" [8 Q, a' v$ O
            // 写一个字节到 THR
' a& `4 N: k' Z# V  n            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
, Q6 J" l! @9 H- L( A: d            length--;% u" G" j0 O7 D) j
            count++;
% x' T6 d- P$ N. m        }
- W/ m( [5 I# R: p; z1 \% U" s6 }$ d        if(0 == length)3 ^# l# K) v( U9 f
        {
2 f1 [( E0 J! U; `9 {; M            // 禁用发送中断: S8 S3 R) L7 U$ n
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);8 Q/ \: P# E9 ?2 G$ u- @/ C. _
        }' Z9 t+ X, X- \! S7 D2 t
     }. y/ q  k. A+ p7 {: c
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以( P* r! v! S. E! P" U: o; w8 T7 G
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 & f+ B) H$ V! q) u7 ^
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
% |( E; }1 `/ d* t9 M# H1、存在所有可以访问的 RAM 空间都可以& l% j* Q% J( ~+ B# F/ n
2、因为每接收一个字节就产生一次中断 ...
) s- _6 {7 ^4 k7 ]) X5 C$ q- c
那下次中断是怎么触发的呢?  d4 K5 [$ E( ]( G

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
- `! ?" r) I9 T! G( R接收到下一个字节

1 s# P3 n9 y; J& f没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?( C5 R% O9 P2 K  W( y* m7 c

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
+ I5 v4 j, x& C- L没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
2 c  @  @: R' T0 `, x ...
! l0 H* s7 M1 _3 m) Y
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦' s3 |' k2 n9 _9 G/ L" V  t( x

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
( {2 f% _  ?9 ~. H你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
4 F7 ]. T7 i6 |
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:332 t, S) l' N1 L) ^, \
手动使能发送中断就会触发下一次发送

0 e1 q6 q1 h4 |0 c您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
# f9 Q2 p6 w% w% O您好,我想问一下如何手动使能发送中断?
' F6 s/ A! f  T9 J' `" K$ Y
您好 不好意思回复晚了 2 y- U, b* G0 d9 n& l
应该这样就可以了0 _3 u, h% u, I
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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