嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
$ n$ ]' ?  e* E$ O7 T# s1 l' S1.。DSP解算出来的数据是存在哪里?! l/ i0 ~% D: p/ n
2.。在例程中有这段代码:
+ O) R' {9 P; D% C unsigned int int_id = 0;
+ _# ]! G  {# c: r0 \! z3 X& a5 v0 z
    // 确定中断源
, N9 v! O; c) f$ o$ B- S' R    int_id = UARTIntStatus(SOC_UART_2_REGS);
' M% u( u# @( t) z+ x8 u& |& y0 x& T- I+ K1 O: R3 r, T
    // 清除 UART2 系统中断- W. e6 l) a1 i) ^; P
    IntSystemStatusClear(SYS_INT_UARTINT2);
2 a2 \  H6 k# q$ d. @8 t/ O* _- _- K, ]+ ~  {0 K" g
    // 发送中断
8 {4 E  E/ D! l# r' M$ ?* B' `7 _    if(UART_INTID_TX_EMPTY == int_id)
5 K2 G/ a1 m, K    {1 a: h7 o; E5 e: t/ Z* t; u. R
        if(0 < length)* e5 ?. Q+ [4 m6 Q; F! ]
        {/ X" V3 C* x8 g9 D5 {; i
            // 写一个字节到 THR' _$ p. u' E* k- b% b
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);8 y0 V7 F/ g9 |- h4 y1 H9 Q7 d! K: O
            length--;
& P: R5 Y- B* g, j5 P5 _            count++;4 ^9 V/ Z( r# N( P$ P4 y% \& f
        }5 P  n) r- ~! T' i( t
        if(0 == length)
& K+ p* R0 D+ T( c" u: t  d        {
2 C, R: m# D1 c3 h& c. Y            // 禁用发送中断
' D6 O" r! R# X/ P- f            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
  a8 j1 u' b. h- Q" k        }5 S0 C7 l* Y' G9 Q$ z7 q* I5 [6 @
     }
2 d% M, j1 Q. z2 q( _我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
4 [: ?: M/ h5 r: G# x' ?' T2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
" G% F2 h+ t. Y$ g3 F3 r2 S7 i3 d那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:293 y& b- U# v$ C% @# p7 J
1、存在所有可以访问的 RAM 空间都可以5 B+ m$ C3 a7 v* m  D
2、因为每接收一个字节就产生一次中断 ...

: }4 n1 P2 e# T* g2 y那下次中断是怎么触发的呢?
* f, f, E/ e8 O9 p( B5 N7 L" D( `
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:431 c$ [' f% g/ _* C
接收到下一个字节
- r( u: z# K+ L2 x% |
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
  f; Z" f/ x/ e; R# N6 o& u* `
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
$ Y! q) q3 C/ p8 f7 J/ g; x5 }( r没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
7 t5 H& G, F+ e5 m& V' k/ R) Z ...
' Z( h" V  `7 H+ s- w6 Q. R* v
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦8 i* k# [% A, B$ Q# ?1 u

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27, k$ Q$ c4 e7 Q7 G1 R8 V5 z; r+ m
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

# m8 U1 A% C% v0 E你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
' P7 n: {2 H8 G8 ?; l7 c手动使能发送中断就会触发下一次发送
8 x" x, G0 L+ }( p( B* [5 `* [$ `
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43% @; p' t9 \# ~' t+ ]6 |' a
您好,我想问一下如何手动使能发送中断?

: @2 _# s+ d& L您好 不好意思回复晚了
7 K% ]3 L* X' S, j. |" |1 H  b应该这样就可以了
, ^9 D/ I- h! K  y" y$ M3 N$ l& u  f    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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