嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问, T9 G$ W6 A' I
1.。DSP解算出来的数据是存在哪里?" x" M' Q; I' ^; l; i/ q: C) |
2.。在例程中有这段代码:9 z: \1 U5 z& x( h4 ?! p, n8 n! s& _
unsigned int int_id = 0;
, q+ O0 i0 M8 |% r, Y0 m7 V' c2 A. L) o
    // 确定中断源
% H$ q0 l4 [  j& R  E8 m    int_id = UARTIntStatus(SOC_UART_2_REGS);7 G4 I: a0 {+ g' M! t

7 P7 l1 n: p* I    // 清除 UART2 系统中断% r: ~* s1 V) {3 t
    IntSystemStatusClear(SYS_INT_UARTINT2);
! E$ k5 N. [& d+ g) u' ]3 w2 Y
8 A) }1 T1 [5 ]* ?9 v# A    // 发送中断# H5 V, \) V$ L3 M* n3 d& D
    if(UART_INTID_TX_EMPTY == int_id)
4 ?' S( d) O3 ^* v  o% C# b" |    {
! b. G7 u7 a" L- G( Y) S        if(0 < length)
7 X6 X" j% U! t$ }        {, X1 O* X  C9 `. C
            // 写一个字节到 THR9 s/ L: Z6 |& V: X% a3 D& \1 b
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);: y, P5 i) l) ?( ^4 Q* r5 q
            length--;
; `- \0 M7 C" u( Y; s5 w            count++;3 ~0 l, R$ R3 }8 R; |5 y6 \
        }
; V. U  V; ~1 R0 M9 _/ C/ U' S        if(0 == length)
& m5 n2 T0 V- i# d        {
) u' Q- o; v0 g: L" t, ?            // 禁用发送中断
# C+ g, @1 F' z! Z7 G( e            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);3 N, r; R( k+ B9 o) o
        }; }- W6 G9 |% X
     }6 O! \* W' G* I- `: p% |
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以* x7 a8 {/ e! T4 f4 p# @# z
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 # g) V- _' o, ^' A
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29- x' U$ \2 v/ C' y$ q; n
1、存在所有可以访问的 RAM 空间都可以" E2 C9 V2 _  z2 i- ^/ i: Z
2、因为每接收一个字节就产生一次中断 ...
9 |9 C( g3 u2 F3 l+ w( G5 R
那下次中断是怎么触发的呢?
# X3 c! y7 w- _/ @
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43- x2 F: b6 Q) }8 r
接收到下一个字节

5 q9 l' B% s4 M没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
) C6 T* u: i) a+ A$ k. G
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:432 ?/ Q# N1 k1 W3 `
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
% |) ~# ]0 H( n1 l ...
1 C7 `  K" Q' x6 J! p
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦9 K5 p5 G9 w8 \3 p: a

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:276 Z$ ]$ V. G* {: m" O7 N. K- l5 O
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
3 O0 v) J2 G. x
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
  Q' k0 T/ q7 ~; ]: Q/ C手动使能发送中断就会触发下一次发送
4 L1 S4 [/ _7 q) ?& H8 {
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:430 L* w8 M  g6 G* A1 V
您好,我想问一下如何手动使能发送中断?

: K4 D6 i, P4 S+ d$ F8 Q您好 不好意思回复晚了 3 ^, u4 u6 R9 Y1 Z; m. o- S* s' i" w
应该这样就可以了$ ^0 @0 f4 O- J, m7 A1 W
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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