嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问; G* Y2 Q- d- U4 {; ]) i" }
1.。DSP解算出来的数据是存在哪里?
* \! [3 u+ O' d5 q/ U$ l% l2.。在例程中有这段代码:6 ?4 k  c" z. L- ~$ z$ G
unsigned int int_id = 0;
, R! x6 }. P+ p2 M; |7 s" g
+ z; A  [3 y; E, s2 _3 K1 L& A    // 确定中断源- {" e+ ~- P& \1 M& E0 E9 o: [
    int_id = UARTIntStatus(SOC_UART_2_REGS);3 m6 Y( g0 Y' u* [- \: c# @

0 f' `# k  _) N5 P    // 清除 UART2 系统中断; L; [& ~; V- V4 V9 V: Y
    IntSystemStatusClear(SYS_INT_UARTINT2);9 ], u+ \: \6 X7 a9 k1 M  r
8 j( L2 q! ^6 z
    // 发送中断
; n5 {6 l9 y/ I% x) M2 r3 E    if(UART_INTID_TX_EMPTY == int_id)
" m; w& M! I0 K, R2 P$ e    {
. w! k/ s$ l+ ^5 y        if(0 < length)" }% S( Y$ [, B7 K: O
        {* d( G7 K0 G8 N5 s8 k+ r
            // 写一个字节到 THR  q; A8 j0 k( h$ q8 K9 g7 N
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);0 a# U1 T3 F( I! }* ?
            length--;
, g# V$ f" y/ W  J            count++;
0 B6 t9 I0 @, H+ E" Y        }1 k; p1 J7 V, D8 J/ W2 E3 t3 q) d7 y" b9 e
        if(0 == length)
+ s" y' N( K% R- W. S        {2 \9 t+ I+ h$ \2 F2 Z+ ?
            // 禁用发送中断" a$ k5 q, N/ e" ~- i
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
% H- I: g2 r* g& l: M7 A        }: N+ V$ R/ O* h4 K
     }
9 q  _7 G- C( i" g5 N- E我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
: |" M. `; e% L2 u3 T1 h9 x2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默   A# s- X& J4 f
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:294 T1 K7 x& k2 V, p$ m" s, s! i3 H
1、存在所有可以访问的 RAM 空间都可以5 E, e9 O+ L7 b/ W
2、因为每接收一个字节就产生一次中断 ...
: ]" ~  n7 P2 x5 |+ |1 ^7 m6 X& F
那下次中断是怎么触发的呢?+ ~" B7 D: |) y+ T

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:430 @3 b( p' {  O
接收到下一个字节
+ n& X& u' s  J; H
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
1 x+ [! Z: _$ x7 g7 C
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:433 \( t6 F2 F1 c/ Y- m* ~; ^9 g3 a9 A3 d% a7 S
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
$ u* a( y+ B: [# }$ f ...
6 b/ b  G. N' A
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
6 t/ s) R( f! n+ d/ N
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
+ ^1 a8 p8 ^- b1 ]; O你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

3 }/ g" K; Z" m! Y你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
. _, w4 o" E9 O2 }! s) w手动使能发送中断就会触发下一次发送

) `  _& _7 D) _* J8 y; V您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
( ^  i4 J  h6 W& s7 _& j( ^您好,我想问一下如何手动使能发送中断?

4 l# G  }- u) ]# g* [7 {; u您好 不好意思回复晚了
) m( k. D: w; J应该这样就可以了
- |( X! A, Z* R0 m/ [+ Q    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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