嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
9 T3 p! w. V' L1.。DSP解算出来的数据是存在哪里?3 N+ {) Z9 x% @
2.。在例程中有这段代码:% l9 o5 {) P2 h- X6 y$ M; _
unsigned int int_id = 0;
1 g' }& J9 k0 e3 z3 _+ ~/ f# T$ C- l7 S
    // 确定中断源
$ A# w( j$ L: S/ U* r    int_id = UARTIntStatus(SOC_UART_2_REGS);( \" O" C8 }8 ^) z$ q
. s  Z/ o7 M3 C# q) j" e/ P
    // 清除 UART2 系统中断
7 K4 n5 b3 `7 f: i5 k    IntSystemStatusClear(SYS_INT_UARTINT2);
2 a5 j4 j) t$ n6 v' f: M- M) r0 Z4 [6 w) F5 e/ W" u/ ?3 T
    // 发送中断  u3 |5 W" \% L; L  L
    if(UART_INTID_TX_EMPTY == int_id)
5 B( S* ?- X8 q$ ~7 k8 n2 P+ U( @    {
0 Z: l3 b* S1 b' j        if(0 < length)- V/ ^5 e. v  l) R
        {
+ ]/ s$ z9 k" H, I2 j/ p            // 写一个字节到 THR( |' Z& ~  ^: X1 X# w
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
, ^" }/ Z( U) {. u) O! D) s' E% m3 X6 {            length--;
/ Q7 s/ t# I. h) t; m            count++;
" B" @- z3 s/ w1 p4 B6 J/ u8 y        }
  k5 z0 B" z. w; r& _/ G! [) H3 x        if(0 == length)% Z* E3 S" k* {9 ]4 b
        {
( f0 O+ v' p$ k3 |            // 禁用发送中断
0 Z/ }6 e! @/ x            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);8 @8 }6 ~3 d( V
        }! q2 l2 i4 e2 l( ~! z
     }
6 K. e7 Y6 U2 k" k我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
1 [/ n* e# n( e4 N2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 5 b7 F' `8 K, w' F7 n; l7 i
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
/ U' g1 ~# \  e5 g$ K; E1、存在所有可以访问的 RAM 空间都可以7 g% h7 S* H, U' P. x- ]+ W! M3 b
2、因为每接收一个字节就产生一次中断 ...

4 _# G& {4 I5 I那下次中断是怎么触发的呢?0 K; t1 b' K& j

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
! e/ J5 \  a" `( ~- u接收到下一个字节

, B* {4 @0 v( {' g8 f没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
0 a  ^% a2 Q+ U. W
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:438 S1 n# D" f# e$ ^
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?8 A' j4 G! l% n4 V1 G  C; V
...

* M) B6 x# k1 d+ J, z4 |, `, c' J2 }手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦5 ~* b+ u" u! S# P/ {

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
; Q: k) i9 z$ A  i* `! B" s4 ]  V你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

9 |/ g$ b- a9 P! I! C: l你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
* r1 m  E+ y6 j1 O手动使能发送中断就会触发下一次发送

+ w% W$ Y; x" ^8 Z4 M$ b. W您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
! I$ f1 r3 R5 j您好,我想问一下如何手动使能发送中断?
* o- }7 t. a" R& ^% R7 Y
您好 不好意思回复晚了 9 B& W; a+ b" M1 M. P% l/ C! ]
应该这样就可以了
# g  o  ~* o( }0 [# f    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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