嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
% T  T" C& w$ x3 r* J- X1 q; O1.。DSP解算出来的数据是存在哪里?7 `; A  W9 v, \- I! |  o3 A
2.。在例程中有这段代码:
( \0 z! I" M' y  S  T unsigned int int_id = 0;
9 |6 U$ c  w" V2 M2 Y. w7 h$ y& m: z( ]
    // 确定中断源
- C" D; V9 r" o, h/ v    int_id = UARTIntStatus(SOC_UART_2_REGS);) C0 W3 @, C; w2 C& P
9 F$ D! N, u8 y4 r. g1 Q
    // 清除 UART2 系统中断" I9 B6 g+ C/ A& ~, v, K# I
    IntSystemStatusClear(SYS_INT_UARTINT2);5 {: t' i  k& V
- X& K8 o, k9 z4 k
    // 发送中断' _: q" h, C  B) G
    if(UART_INTID_TX_EMPTY == int_id)
2 O+ R8 b+ A! q# G2 S    {1 z8 F' ]( @. s5 N
        if(0 < length)
, d; m" Q9 p$ M        {% Y* y! b: L4 L" d- g+ c& n
            // 写一个字节到 THR$ Y# `% `- C: R# G
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);" v4 C+ T4 Q$ N: M. }$ P4 R
            length--;
" J) I( u# r# k! S$ E- @            count++;
3 t- |+ u; W7 w- U* M$ R        }2 N6 q' H3 o8 V" e0 k
        if(0 == length)2 P) c" H# L! u) ~8 R3 m, c
        {
1 B( }$ ~; P* v; Q            // 禁用发送中断) I; J' G- j7 G* P+ F) t
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
  V9 V9 X9 s( O& V6 {) Q* z        }, d9 W9 f8 ]' ^1 t' b! f8 r
     }
$ y$ m  k5 S) M我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以  a$ i* b) u, \$ X
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 ; h" K+ u. ^) H* I8 B
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
) J1 J+ l0 f2 T# e6 l! M( Q1、存在所有可以访问的 RAM 空间都可以
# g3 x4 I1 v8 ?8 ^2、因为每接收一个字节就产生一次中断 ...
8 Q: [' r, O* r
那下次中断是怎么触发的呢?
" U# h4 Y! V: S/ c+ Y
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43) m. X6 t& a4 m5 r5 z0 T
接收到下一个字节

, m4 R9 U1 c, h# u8 Z6 I没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
+ b6 M. b* D5 q3 o7 `, i
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:438 C7 \' n# {0 x, C
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
  k  e0 B! Y+ {% E, T" S ...

7 u' w! |$ n$ @2 w2 f4 f手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦/ o: K# A3 z6 g: c6 h

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:271 r! B! F2 ^7 {. m
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

  d5 u5 W, ?/ n* x! m, b! H4 Q你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:333 V9 T$ o# h: E' D( G$ y- Q
手动使能发送中断就会触发下一次发送
; x/ q/ {7 ]4 r2 G1 f
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43: r$ V$ p5 I3 m/ f+ [: u5 w4 M  @
您好,我想问一下如何手动使能发送中断?

3 q9 L) e7 k& x您好 不好意思回复晚了 ( S6 F8 V  _+ v( Q7 y
应该这样就可以了
/ o* u* n5 }" s, Z9 r8 z" J    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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