嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
' |/ o& Y1 E# A+ o1.。DSP解算出来的数据是存在哪里?
: E) r- x- I9 O; c6 |& |2.。在例程中有这段代码:- w% V8 w& s. v
unsigned int int_id = 0;3 B$ L; e0 P6 v, V# s- R! a: v

! q5 c" ]4 N& e( R' ]9 Z$ J0 B3 n    // 确定中断源
# K, g9 W' ?( [3 \    int_id = UARTIntStatus(SOC_UART_2_REGS);% e, t- [5 L' n3 o9 b

8 j: ]" Q' S! A% F    // 清除 UART2 系统中断
' Y2 m) v7 ^7 C6 w, d, s    IntSystemStatusClear(SYS_INT_UARTINT2);
+ K' [3 k: r7 N1 N* U, j7 N& m2 |( r$ _8 g! Q
    // 发送中断
  m1 {9 b% o; z; A4 o    if(UART_INTID_TX_EMPTY == int_id)
8 P# F8 e0 A3 _    {
  i1 C1 d( X: T/ s- Z        if(0 < length)
; ~$ G# R# W1 R' _$ l: w. ?        {
5 j% G3 n. N, ~. A            // 写一个字节到 THR  J, H6 D( D- |
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
+ Z# X5 D2 F7 P/ B7 n            length--;7 g6 l! |0 L8 O/ d6 C" J9 p; F
            count++;( i! B+ E1 K6 I6 z0 ?
        }: j0 F/ a; q& t( A$ l0 A, C
        if(0 == length)
( n% {% G  w  h; f        {2 F* \  t9 w. m' S3 J
            // 禁用发送中断
3 i2 K% W7 ~% C( x            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
8 y& k6 e" K$ R% M. g9 {3 i        }
! U2 v# V" b6 q$ ~% Y1 d     }
* G* e" W# z  w8 z" {1 F  `; Q我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以- J, ]( r1 f+ K) S
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
" z& n0 H. U0 z+ O) E0 J那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29+ C! @7 D7 S7 j% ?8 X# |; x
1、存在所有可以访问的 RAM 空间都可以9 ~- z) Q3 Z7 B# t0 n
2、因为每接收一个字节就产生一次中断 ...

+ W. N/ T& N: K" f! g, H6 Q* b那下次中断是怎么触发的呢?
( c& `$ k& }: u& L' ~6 k
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43. F3 {! c6 U4 C( P: e1 w
接收到下一个字节
0 U5 g: z' T; ^8 l! E
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
7 r) M- Y) `1 V2 k0 N$ K& ^6 e4 s
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
# C4 v" M5 g; N) t. p/ B没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?1 e. x9 v5 B6 X& M6 J! R
...
1 _9 o0 s0 H1 {$ C  m& a
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
7 S+ e' X/ H4 j7 V
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:273 }5 F, f7 L3 Q
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
& n. f2 h8 a4 v4 f$ C
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:335 l" Q) B1 m  Q3 W. C
手动使能发送中断就会触发下一次发送
1 D7 Q* S& z5 Q2 G$ Y3 C' d
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
5 O; r  h6 v8 B0 g+ R2 ?* P/ C8 U$ H" d您好,我想问一下如何手动使能发送中断?
1 C# D( u3 i. M: ^$ ~; D5 B
您好 不好意思回复晚了 - i# _) d- e. O' m0 ^
应该这样就可以了
7 U" h9 c9 A/ S* n, j( t    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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