嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问) s6 K; _5 w- m/ C
1.。DSP解算出来的数据是存在哪里?
; N! o' T: l7 `% s, W! O2.。在例程中有这段代码:
2 A0 Z8 B$ R- h" A unsigned int int_id = 0;+ O7 J, j& n9 `- s% t1 ]( [5 H6 e

  K- g0 |' h  A  P" V$ h8 d    // 确定中断源
# B+ p% Z! u7 U% {  r  N    int_id = UARTIntStatus(SOC_UART_2_REGS);
: ]6 N% T7 M4 Y( Y# Q* [- s! _8 @2 t( s( W9 p$ Z) v
    // 清除 UART2 系统中断: k" b! }% r6 {/ X: m
    IntSystemStatusClear(SYS_INT_UARTINT2);
9 f/ Q+ e" Y9 z8 O  E3 A" U" A! C% g4 ?* v  L  _- j
    // 发送中断* e# A7 p* @' H" ^; |! C% @
    if(UART_INTID_TX_EMPTY == int_id)  v4 t' x' y( t7 D$ K( _- x
    {& W/ J# a" }* j7 G" f3 [, I$ a
        if(0 < length)# G" o/ z( C; }7 l4 V8 |5 ]
        {' A3 J( D0 h) i
            // 写一个字节到 THR& {  ~3 F& n$ ?" d
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
4 }0 G& E' x: ]) |: w3 g# V& v            length--;
7 ?8 C9 \& O4 N$ x6 E* H            count++;) [2 t) t, M* {, n% @% Q* ]6 i
        }
3 H5 U) O6 G& f4 f1 H; ~        if(0 == length)
9 |; m* E  f/ S% M) D        {
6 l* s; }# X$ t0 [  x" y$ E            // 禁用发送中断
" s, G1 Z. w3 O            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
4 U' Q- f7 B6 Q% }& k        }
" S/ y* e5 \2 g& f' q2 q  V2 m3 V1 Y     }/ b; {' _* d5 n. ]' t+ ^
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
- F/ T3 Z# z: Z& ~  G! ~2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
5 l5 z' `- z# J1 X# w" m那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
* v8 M6 P6 B+ e4 ~1、存在所有可以访问的 RAM 空间都可以0 J* G1 D7 f$ A( e
2、因为每接收一个字节就产生一次中断 ...

+ R/ H4 Y+ P5 g; U; x* J6 q- O/ r那下次中断是怎么触发的呢?
/ V% W1 E6 o8 C5 A% g
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43& T: u: f* m" ^+ E/ s2 n" F
接收到下一个字节

) _! R0 W. E7 y- q2 J: G没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
2 G4 M  K4 w" }* Z  y
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43. v: H/ R/ l2 @! ]/ A  M
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
) F& q, C0 O& k9 L( Y" E( e ...
0 y; D3 y$ Z/ K( v1 C
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦$ T+ T% [) z, e2 l6 v2 v

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27+ w9 s! b% g  z& V! E4 l/ d
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

7 W/ Y$ w$ y4 M7 B1 M7 w  D3 i3 D你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:331 p& [" {! Y$ \- p
手动使能发送中断就会触发下一次发送
: |. ]3 y& w6 R: X9 J
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:433 \& Q' @9 k- c0 L( `* K" e# E
您好,我想问一下如何手动使能发送中断?

9 j4 S' a6 ^  o# h! y您好 不好意思回复晚了
9 v( H; _7 L& l9 I1 h6 v) z应该这样就可以了6 u+ \: K& s/ {3 q5 `9 k' B& ]
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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