嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问* Q. H) `: j, F  k3 O+ U, I
1.。DSP解算出来的数据是存在哪里?
' ?, x- R$ T9 A9 \" E2.。在例程中有这段代码:- T  R3 N$ O' Q/ _7 I
unsigned int int_id = 0;: G0 I) \) B8 X* f
" `. ?* e( x" H' |5 V" E
    // 确定中断源1 l$ q6 l8 T, g/ \$ ?6 I- s0 l9 \+ D
    int_id = UARTIntStatus(SOC_UART_2_REGS);
' D7 l- E  D9 v/ [; p( m# C2 B* R) U1 X& R2 y2 N3 n
    // 清除 UART2 系统中断* n2 G# C% v8 y% i# K: P
    IntSystemStatusClear(SYS_INT_UARTINT2);
& j. V$ J. P, d9 n0 I/ r4 U; G" G" W1 |2 l& y8 C* Q1 n
    // 发送中断
. G! {: Z. m/ V9 |! j  \" x( U! F% c    if(UART_INTID_TX_EMPTY == int_id)
9 _+ t' D  t" a$ F    {5 e5 J; s; m/ ~. [
        if(0 < length)
# `( c: q/ T6 _- m# O9 ^        {
$ @  O, J2 R. w            // 写一个字节到 THR$ |6 B) o: z  n* {0 Q
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
, B( }. u1 L) O* C, M            length--;$ u4 L$ |" d0 W: b$ O
            count++;) m7 [& S7 q* B5 R
        }
2 Z& q, d, y4 L" Y* G: S& u# u        if(0 == length)4 I  y0 B2 W* l0 b  P
        {! x  u! y! F* d
            // 禁用发送中断. ~0 ^% p/ M# o" o6 d
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);" T* f7 {' n) Z# Y1 {
        }
5 k/ L! E- p7 A  s  v     }
# ~. G& L5 I- Z" |$ Y我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
. D* L% W3 |& x2 R2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
( ?: A" G& |' b4 d" a那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
+ |, s9 L3 D2 v1 }6 w1、存在所有可以访问的 RAM 空间都可以
; D; s+ t- t* s2、因为每接收一个字节就产生一次中断 ...

( E4 q& Z1 ]) D. R那下次中断是怎么触发的呢?9 F# {- m" [! ~4 L6 D

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
& |1 D! |# D: h接收到下一个字节

, G2 {5 T5 l  f. q, Z% D: S没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
) Q1 F/ T4 K# O+ D
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
! R6 g/ e3 Z0 k  H, t没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
/ P- z  K- Q: [, t ...
2 g; P+ z% G% I9 j- Q, y
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
. u! p" v9 q9 B% B4 l& D( u
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
1 t" I1 l2 @0 z% @4 }* B你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

  t  l: L% t; h) D( }; f+ k. K你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
8 e2 }% ~8 Z6 [: V0 V手动使能发送中断就会触发下一次发送

  k- B, y7 D+ H3 C7 @5 p您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43/ L! R# T% S2 b* i7 n
您好,我想问一下如何手动使能发送中断?
2 K6 `4 x' S6 [1 |5 X- I
您好 不好意思回复晚了 & ^3 g* o, n8 O( ]) T& M' ]8 C
应该这样就可以了
% W7 g+ a& M' p1 E    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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