嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
& Z& w5 P2 e# |5 A1.。DSP解算出来的数据是存在哪里?8 n2 N, {$ q' n: g, x' w& i7 e
2.。在例程中有这段代码:
& V( `  L/ F' d unsigned int int_id = 0;
5 \/ B* w1 {% v% B" r. N+ b& M+ V% a# n9 Y
    // 确定中断源( P  ^4 `+ t5 H# D) A/ h
    int_id = UARTIntStatus(SOC_UART_2_REGS);$ r/ ^# r# _/ A  R1 p
- u& K+ y9 G& _
    // 清除 UART2 系统中断5 u; {% ?/ }: Q; I0 ]+ {$ Y
    IntSystemStatusClear(SYS_INT_UARTINT2);
$ P- j& K1 D% C+ \  A4 m& w# {
1 c8 S' o" `9 \8 A: [    // 发送中断; ^( T3 ?  |' x8 G
    if(UART_INTID_TX_EMPTY == int_id)6 j5 Q" v9 q2 r" ?
    {
. b+ `$ Y+ n& t/ J  D        if(0 < length)/ K0 w/ z0 e( L; Y, @
        {; }& y3 A7 t7 j) P# G& m- |4 B
            // 写一个字节到 THR6 _0 B5 V& _. o) v* J5 @6 e3 A
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
) j" J$ d; D! C8 C            length--;
) K/ y. ~. m7 y$ u5 d8 u8 w            count++;
% y# g& Y  N( \# s$ }7 l        }
: f0 }7 m+ A' I( D        if(0 == length)( P! I( q  ^/ {1 n/ s
        {# x8 z3 r; a1 T- d* i8 ]- `
            // 禁用发送中断
) t% q7 u4 b" {: I            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);/ b( t1 n7 k2 w  ]# L8 \
        }( w1 {, D( E: w/ O
     }
/ s! Z2 R' E' c# L6 c0 Q我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以; P7 \. c6 a$ @- ]/ u, C0 I
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 1 s- W0 s+ ^! a7 H- M/ z- J
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
$ t3 [( x( p# N8 x8 n: I- z3 X- [1、存在所有可以访问的 RAM 空间都可以
6 i$ X0 |/ M+ O+ c2、因为每接收一个字节就产生一次中断 ...

8 N, _6 a  n8 i6 g$ H那下次中断是怎么触发的呢?* z/ g. x2 r7 ]' p0 s

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
. t- M  E2 V# q' d2 d8 R接收到下一个字节
# p; C& T" m! V, E  W% [- K
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 m# v% C! y" n( {! M- [. J( L& k

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
9 c2 w' A$ F9 X1 K: s3 T7 |没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
' @1 [4 Y# C' V ...

7 t# K" Q8 x* k. D. Z# N( j5 a手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
% y; Y- q, G* i
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
0 \: ?2 P/ X( w6 c你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

2 ?6 A0 w" Y. ?9 a+ h5 X你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
0 x% |2 P$ J% N( k& w手动使能发送中断就会触发下一次发送

& P, d; M- u3 N2 c您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43# w& B+ Q. p' a* n: x
您好,我想问一下如何手动使能发送中断?
9 _% M4 M, e) L4 d: d
您好 不好意思回复晚了 % V" D7 E* V5 Z: w+ ^% P
应该这样就可以了
3 |" S* ]* s, E* b3 V+ J    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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