嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问# q4 p/ u# M' n0 k( q7 f
1.。DSP解算出来的数据是存在哪里?/ m" f! z5 X6 H1 n
2.。在例程中有这段代码:
, ^8 x4 s0 e2 o/ l2 J unsigned int int_id = 0;
! b* {- y4 ]* E$ l9 y5 g' k
' R- _2 U! T* x    // 确定中断源, e3 y9 U: W! A, O9 m0 _( X
    int_id = UARTIntStatus(SOC_UART_2_REGS);. G% V* n: i8 O3 R

: c# z; ^+ q+ g; a2 G7 i    // 清除 UART2 系统中断
6 |/ B1 v, ~% x4 F# Y/ t    IntSystemStatusClear(SYS_INT_UARTINT2);
% \8 q; m8 l" c, @8 Y% ?! p# [& n' X: T6 V
    // 发送中断
1 Z% d# Z8 \5 J  L( Y3 o" N    if(UART_INTID_TX_EMPTY == int_id)
& {1 X8 [! L- y3 {) I    {7 O+ S7 l) t& ]) r; I- b8 X' J8 T
        if(0 < length)
  c) o& Y- s3 s/ q) g: f; O        {% b7 o& S8 {5 u1 t: Z
            // 写一个字节到 THR' y/ J- s1 }$ l
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);( U+ v* b( T3 L3 Y' i
            length--;
& }: T& C; k0 _' m5 K& g8 D            count++;6 \& [' X/ N' ]# Q; q
        }6 B+ c, F% H* J% B  t; B( c. B; _
        if(0 == length)
  M4 a5 {% R5 c/ p2 M( M! }        {
  L0 ?4 m% Y0 l( v, h3 b+ m" i" s! ^            // 禁用发送中断
* u& \  _. ~9 @* Q* O/ k            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
/ m, h) y+ Z& `4 w1 |        }  O6 D: R- v9 ~% _6 o: e' X9 i( Z
     }
0 ]; F, y) C' u- o, p4 k0 Q我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以# U1 |2 k! @/ L- f- y9 Y& W
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
0 s6 o$ J. }0 L: g那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29# g  q2 E9 p6 ^
1、存在所有可以访问的 RAM 空间都可以; S* Y& J% m) ~% f5 \3 {+ a
2、因为每接收一个字节就产生一次中断 ...

5 P/ B; N* s9 Q. B0 B那下次中断是怎么触发的呢?
- J1 ?0 V( [1 v
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43' K: S/ R" ^5 b/ t( ]8 O# V
接收到下一个字节
: F5 [6 ~) }% Z+ z
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?" ~: q4 M4 \% S9 R

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
6 ?6 w  J* @0 I. J6 c# X没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?  d- z6 o$ @/ C
...
8 G0 J7 x& e2 L
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
9 s: u# e6 _8 l. [2 R. z$ A5 o
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
5 V8 k5 @( a& P你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

4 \: o9 G' L1 H3 H0 t5 \你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33- u( M, r6 J- Y
手动使能发送中断就会触发下一次发送

! N7 H$ l1 {5 e1 f您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43. j  J4 v/ q$ g- G+ z
您好,我想问一下如何手动使能发送中断?
# O8 Q0 q8 t# F- l' n8 y- o
您好 不好意思回复晚了 9 g, p  W: r8 w
应该这样就可以了
- S* E0 [- Y$ h; c    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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