嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
# A% Y/ k* U$ P, O2 S4 Z1.。DSP解算出来的数据是存在哪里?. C, |0 o$ O( Q! X; k7 H
2.。在例程中有这段代码:" a# U+ O4 P  [; M- `; X8 W: L* g
unsigned int int_id = 0;- M5 y1 a: a7 P) X& ]! ]5 n6 l

2 C9 t8 K7 c( v  P$ A2 k0 U    // 确定中断源& p9 h8 ]. }+ f: A# U- f3 ?: `
    int_id = UARTIntStatus(SOC_UART_2_REGS);: O. y9 s/ D  t' q$ J* H9 e

% u% l; g( C" Q8 a: E- u% q) I8 z9 M    // 清除 UART2 系统中断  q$ s% q7 K( p7 L8 |1 @
    IntSystemStatusClear(SYS_INT_UARTINT2);
. {/ s2 ?. {4 b. n$ i' F* T1 _5 q
2 [# p9 R! k) m7 B4 X0 j5 q    // 发送中断6 s' J, o' t4 J6 I( h
    if(UART_INTID_TX_EMPTY == int_id)
7 C0 Y& s4 M& f    {' Y; B4 l8 _. b
        if(0 < length)$ F5 _! t8 N" g' @
        {1 K7 D0 b8 G6 R* a) i: i) C6 \
            // 写一个字节到 THR
# V) J4 U! y0 b2 B            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
! P" Q6 c! _  ]* I1 X, E, b            length--;6 E. L0 j0 q% b. W9 j
            count++;
4 H+ T1 h% x4 a) h2 a        }3 F1 J% ~& {4 }) d' d9 F
        if(0 == length)
4 _+ {  @; g- \! Z; {! n% n        {
. z0 m4 n0 @7 K: J/ K; w            // 禁用发送中断
7 ?$ h+ }# _$ f4 Z& d$ X            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
; f1 J" R$ q  i/ k( U" s1 B        }  I/ s; d2 @0 H& ?; }6 q( r" a2 Q
     }  b9 r, M' R, \
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以' ?* j+ }. O; m: D
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
$ V8 `: c- Q# r- |0 J那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29# e$ G$ ^1 ~  w9 _, i+ a4 ^# F
1、存在所有可以访问的 RAM 空间都可以8 k+ j( U/ C$ Q' q9 x
2、因为每接收一个字节就产生一次中断 ...

0 _7 {' z, |0 ^8 ~. S那下次中断是怎么触发的呢?
0 o8 e2 Y* a( s% J& W2 T
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
4 t. T3 ]# ?' k/ l, }接收到下一个字节
1 [) K1 d$ v" @6 `( U$ c
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?& L! X# R3 {  z+ I3 J

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
. V3 M. l5 Z  L! I* U没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
0 O# Y# |1 I! L  f( ?# D1 y ...
( O4 C  k: C. K& u1 _5 Q
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
6 i- r9 H8 p) x  w) D- `$ P
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
$ A! R4 i& Z; Z" A你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
7 q( h  M9 U4 a
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33, i# A& R- Z3 Q+ W; I% K
手动使能发送中断就会触发下一次发送
0 `$ F; j  n7 R6 P
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:434 Z  p; E$ V' P2 `8 y9 i
您好,我想问一下如何手动使能发送中断?
0 g/ q- V) r( N  A4 p
您好 不好意思回复晚了 " A5 w! D7 B7 F- e. A' r
应该这样就可以了
$ v3 R4 n. ?( e7 J0 E    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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