嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问: i* G+ X* c8 i3 [) O" }7 u* `
1.。DSP解算出来的数据是存在哪里?" E+ b8 I  O6 a9 A
2.。在例程中有这段代码:
1 K! c. }9 q8 e9 |5 l( F unsigned int int_id = 0;/ R& Z! v% o" s6 D# f2 x

! R$ i* L8 h2 Z% s; B; f    // 确定中断源9 }! Z" p6 m9 s
    int_id = UARTIntStatus(SOC_UART_2_REGS);
5 E4 w# A  ?2 P% D) g+ M# l0 Q7 I: T8 d0 h
    // 清除 UART2 系统中断
0 l! _7 K/ z2 Y+ A" A    IntSystemStatusClear(SYS_INT_UARTINT2);# S  s8 w2 T) K6 ~% a

8 z0 r2 R; A+ G6 e9 w/ c4 y    // 发送中断
9 i- H: Y% T; _8 h. y# F$ W% j. P    if(UART_INTID_TX_EMPTY == int_id); _; s6 T8 x0 h  P9 y
    {! u7 p" C# g) O8 `0 R! G2 h
        if(0 < length)& D( V. t8 P8 q0 |
        {
5 W% H4 V+ _9 s+ g: i            // 写一个字节到 THR* b& }% u# l) I! h3 B4 `
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);) T8 V7 ~& O% W# U, ]
            length--;
4 R3 ?7 S* n: S1 }7 {            count++;* e/ y, O7 E& X7 [% Q# m3 t
        }6 B2 d, ~: P# G7 w! F- k3 G# K
        if(0 == length)
6 Z+ g( }4 N( A8 c# S        {8 t6 S1 ?, d9 L8 v+ i
            // 禁用发送中断4 G5 g( }" ]% |; W$ D7 j
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);- [- W# t$ d3 W# Y
        }% Z  y% x& w) m
     }
# v" D) h2 P0 d: n我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以- I6 D- B# d9 K
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
" ~4 j3 Q( R  Z7 w那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
; k3 H* y* _) w3 \2 e* {1、存在所有可以访问的 RAM 空间都可以
" g" I/ C: p, ~# G  Q9 V2、因为每接收一个字节就产生一次中断 ...
% @: G3 Y3 e9 R% l$ E
那下次中断是怎么触发的呢?
6 W. S: R5 f4 z
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:439 ]5 a6 i% ^8 ?  E6 x$ Q
接收到下一个字节

; U# W) j2 U" w+ v5 l/ _没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?( i& f' d1 G, `0 r

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:437 P1 N' y4 N9 I# f
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
* l" }- S) u. w+ V; N6 C: b ...

0 X; K; H6 p; V+ O* B& A" l手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
' l: e* n! d) D  s
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27( a9 o, }& R0 }
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

, ^+ T/ A  j( i7 q! c3 \- I你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
4 t6 R( `7 {2 o3 I4 ^手动使能发送中断就会触发下一次发送

3 R7 r  M# {7 Q% T您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
; r: ?, |. ~6 D$ _; G您好,我想问一下如何手动使能发送中断?

3 y3 l# S, D7 ~! h您好 不好意思回复晚了 ( l9 J0 C9 I! u! q! @
应该这样就可以了. l; v6 q* q0 a$ w
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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