嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问" S. ^, S5 A' X2 I# Z. T! p& w
1.。DSP解算出来的数据是存在哪里?, s/ f& y2 \. W: E8 w$ i
2.。在例程中有这段代码:" k' z. q% \* v( H0 |9 I6 F% l  U6 n
unsigned int int_id = 0;
- r- r' p! [6 A% Y) i7 [9 s& I4 E; s5 Y$ X8 L" v2 T
    // 确定中断源- _6 o$ X1 u8 j( x2 z7 w2 F
    int_id = UARTIntStatus(SOC_UART_2_REGS);# v+ U& z2 \( T  i. ^
# \& }* Q' P% B* w0 y
    // 清除 UART2 系统中断
! h7 ~# l8 {0 F0 I/ S& ~6 v7 ~    IntSystemStatusClear(SYS_INT_UARTINT2);6 P4 e* y5 m" ^6 ]7 }

& w) W! [! n/ q/ L' X    // 发送中断
! s8 V% I& ?8 C- S% n) G    if(UART_INTID_TX_EMPTY == int_id)5 l7 p2 z7 {' I: r% B
    {* ?" ?1 Y  `  X: b5 ^1 J( @
        if(0 < length)3 y$ q4 j  ?! c% O6 X
        {
# {* K" l" v* U% M% p            // 写一个字节到 THR) c2 J+ }# ~( [% ~: g* L
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);# b. n# L2 h$ a; ~$ H0 [5 v
            length--;
; z! U: |6 L  ]; A% G. P# y& h; g            count++;
2 U2 M9 ^* r5 m) N# a        }/ G7 ]2 |$ O8 z- \
        if(0 == length)7 C4 E0 o5 [% a; G: w
        {
9 u# q) s0 `7 D# \: ^5 @# {. ]            // 禁用发送中断
' @8 h! D" T$ `: k: j& M4 o            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
- |3 {. t7 P' L! X" m        }
& c3 i1 K! ^) x5 R0 j3 K! T     }
7 c* q; P: q. F6 B( ^: P# X我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
/ g" f% p% |+ `( g" \4 D2 W2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
9 X1 Q; e* c& f: u那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29/ D# R' ^- t1 p5 s: m" q
1、存在所有可以访问的 RAM 空间都可以* S  d0 |5 ~8 W1 L
2、因为每接收一个字节就产生一次中断 ...

, ]- @  `4 u* W+ s那下次中断是怎么触发的呢?
2 a$ ?/ f# ~( n, @) F9 c( U
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
" p8 W+ R1 M; H6 e3 l接收到下一个字节
6 ]/ f+ K# ]; ~- ~! w7 k* J
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
) L# G9 L) [' }
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
& M+ d  P. ?6 U没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?* L5 H9 Z! U! S% [; a2 N% a. o
...
  s, R' S' Y  |4 i* \$ w
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
% w- w4 N1 I+ w7 [
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:278 v9 {' P- Y. m  p! Y
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
( @8 S/ s" H8 z! b( f7 d) V
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33; I$ [; o4 Y) V( z/ p8 c" K3 K1 a
手动使能发送中断就会触发下一次发送
$ M# E5 q/ w- K2 m# `, j1 o
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
9 e8 U  h$ ]) @' f# L1 m" k您好,我想问一下如何手动使能发送中断?

5 k! ]! O/ ^; R1 Z$ f1 ]) P您好 不好意思回复晚了
; a, q+ i) I, w2 c4 P# Q! c应该这样就可以了
# O$ \' s" e1 l5 h& x% T( E6 a2 b    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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