嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问& L! l- c  |9 x6 X
1.。DSP解算出来的数据是存在哪里?
- g3 s: }$ I1 Q3 v1 H2.。在例程中有这段代码:/ s/ w% ^3 ^0 k+ H8 R8 ^' z
unsigned int int_id = 0;
# b$ l, G9 ]% \. o7 E& ~# z2 j
    // 确定中断源( n/ F0 I8 Z2 p3 t- q$ }8 s
    int_id = UARTIntStatus(SOC_UART_2_REGS);
5 Z8 S0 ~) Z, e
. ]+ E5 V* i' g5 [0 U    // 清除 UART2 系统中断# t: I- W; i" q9 b
    IntSystemStatusClear(SYS_INT_UARTINT2);. T" `9 I8 j6 U. B

6 ?% Y' ]1 q% m; B0 j, G% r    // 发送中断5 X- i$ V4 X0 P) r
    if(UART_INTID_TX_EMPTY == int_id)! U7 n  B* |+ [# P. B
    {
. L* _2 P8 J& u6 f9 o7 s        if(0 < length)! \" {* f* w2 t1 r! g1 ]
        {7 I7 s7 k, z: y
            // 写一个字节到 THR/ z) K5 P& A' C; \, S2 o, n; v) ^
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
3 e  k  M% k0 z( m4 j& N2 d            length--;1 S5 r; x2 a" R6 ~% E& A, X5 [
            count++;$ `! D- K" E+ T$ D) i. K/ Z) t. l
        }% |' I+ }, J" L
        if(0 == length)2 @, w: m# r) ~# m2 L1 m1 }4 l
        {$ H# U3 f+ M1 J3 T0 c
            // 禁用发送中断
# H. _& @6 O8 P% U) E$ _' m            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);, D4 n  B( t2 h1 Z
        }
+ f: Y$ |+ d: d! ]1 C     }) }& A- R# [- _3 t; G! s  L
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
# F! n, f9 i$ l$ A" j9 n2 a2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
6 J% M0 C, D( O那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29: }; I! b: h0 g( s- z& ~/ K: S
1、存在所有可以访问的 RAM 空间都可以
5 [- w2 _  f6 X+ g" ]: i( m/ _# _2、因为每接收一个字节就产生一次中断 ...
' _7 E% y# z- ^- l( Q
那下次中断是怎么触发的呢?8 s5 n% f( w7 V" Z

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43% S% F- ?6 ^7 P9 w! w6 u/ M
接收到下一个字节

: P+ U) H& B$ N5 s. i没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?0 Z; f- b& ^& ?6 o, \8 K

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
; i, c/ J, u2 [- k1 B& r3 R: {; ~没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
- Q8 W1 G0 p$ K$ ^6 C8 J ...
0 l" o) w# g, M3 V6 d, S" `* f) X" _
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦$ D" V3 @) {+ Z. f) s

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27- s# \$ \; J0 x; S, y* ]. z5 s. s
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

: r4 ]4 a0 X$ C* L, P你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33( p4 ~5 W; _0 [( k) ~8 [& h
手动使能发送中断就会触发下一次发送
7 z6 X1 n) s7 g- [: E
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
3 o4 _4 w4 s2 a6 k% X8 c您好,我想问一下如何手动使能发送中断?
7 R8 c0 q, R2 x5 g" f
您好 不好意思回复晚了
" o; ]; a) y0 I& R应该这样就可以了
( l# d2 y" M# M& {/ {( e5 z& U6 z    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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