嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
0 h: g' R' t$ E$ Z1 b5 E& E1.。DSP解算出来的数据是存在哪里?
' h. f) _4 Z: q' P$ T& Q! F: C! B2.。在例程中有这段代码:
! E! q# t; A+ _- f unsigned int int_id = 0;
6 ~3 \; r6 U: S% q/ [
; |# h0 S4 G. t- M    // 确定中断源7 r6 g/ z+ S, K' z* Z6 k6 p( c
    int_id = UARTIntStatus(SOC_UART_2_REGS);
3 T1 x4 ]1 ^1 j
1 i* c% m: m  h0 _) d    // 清除 UART2 系统中断
+ \0 N0 j% m6 X) p) h8 y    IntSystemStatusClear(SYS_INT_UARTINT2);6 b, Z+ B6 S4 B. P5 B" j
% y7 X6 J# d' W: z6 t7 f- ?
    // 发送中断! P4 `, Q; D# X+ r, G& P
    if(UART_INTID_TX_EMPTY == int_id)
2 D4 G! ~* I* P. N+ T6 @    {9 B1 [  k; ?0 s: Y, A, f
        if(0 < length)7 g; j5 N* r! s7 B
        {+ q+ P7 n( i8 M6 p- ]# Z# Y& ?
            // 写一个字节到 THR
  y; R! V) P4 V$ p! I            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);1 M5 Q6 Q) b+ x: |. F
            length--;* U3 b& k# O; L! P) W# z
            count++;
- h# s0 @" L8 L/ y        }
9 J  t0 n8 m6 x7 h$ _' M0 _        if(0 == length)& X3 \, M- l( C- y
        {
* s# G( H8 `0 k( c& j, _            // 禁用发送中断* c/ y  Y" g5 K, `
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);4 \5 v& U/ ^; T! }: T
        }
- s" u  N2 A9 s& l# \+ Y" m     }% i  L% p/ P$ @, o
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
$ m) k' N" F" u& c  K; v" Z2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 % h6 m( @$ S' B# p
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
; z3 y3 g0 _9 h) B1、存在所有可以访问的 RAM 空间都可以4 w1 R- m) [! W6 t
2、因为每接收一个字节就产生一次中断 ...

( |( _6 _6 B3 J/ g那下次中断是怎么触发的呢?
  P+ Z* n" @1 Z& s  _
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
" C; f& q+ [( i. N接收到下一个字节
& [# ^! c% \/ }: x3 W) v) g
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
" {+ f+ A8 w. z; k" O1 }+ b1 H* T+ V
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43; f$ {! f. Z, b! q( ]0 u7 v4 Q
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
4 i+ m  ^  m. e* u/ n ...

1 n$ f  g$ u, R2 L. U0 E手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
! T5 D1 y$ w+ l7 ^) B
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
: g. j" O& Q  u2 G6 ]你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

* m$ M* ]" O5 i0 k# \$ M你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
. h9 R7 ]0 y) j' [9 t7 H4 R手动使能发送中断就会触发下一次发送
8 X6 k( S( c( L
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:432 h9 |3 N/ @6 n8 L  u
您好,我想问一下如何手动使能发送中断?
/ X( N7 n! f% ?5 d) m
您好 不好意思回复晚了
+ r, F8 R! w6 [/ l  v应该这样就可以了
6 ?$ n# G/ L# u! A+ ^( i9 f    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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