嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问0 `' m% r4 `1 Q" \7 h$ }$ h( q
1.。DSP解算出来的数据是存在哪里?
8 m0 X) r* v/ o7 I' G2.。在例程中有这段代码:
. L$ M7 Q. L% E* ~6 q9 V* g unsigned int int_id = 0;
9 I1 l( y) M5 Q) z# }
& E5 L# v4 F7 {& b3 i    // 确定中断源) @9 v3 Q$ v1 N9 ^6 _" A
    int_id = UARTIntStatus(SOC_UART_2_REGS);7 v! O, }. ]# Z& x, N
6 O& C3 X$ j2 j4 @
    // 清除 UART2 系统中断5 x$ g$ V" e8 q( U: q. b
    IntSystemStatusClear(SYS_INT_UARTINT2);  T% B7 N: `/ F" J

1 {  m5 J/ m  M4 g; i3 P    // 发送中断" g% G# C6 c# n3 A3 Z
    if(UART_INTID_TX_EMPTY == int_id)7 z. Q7 k7 b9 k  m
    {
3 `! @. Y' V& c; T$ F# z- v        if(0 < length)  {+ @9 r; n0 b* y% H
        {
& t7 E- B4 C9 n            // 写一个字节到 THR9 B9 h% S( _$ s" B/ S  X: v9 r
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
$ d0 l+ u9 f' `. G& d, D1 L            length--;4 J/ Q3 n( g- o$ O# Q
            count++;+ C7 e1 S7 C" c: o5 W$ y3 Y
        }, ~- d* z* {1 a
        if(0 == length)
% }; b+ |3 @7 \! L+ ~6 \        {
  U) |& {! A( T' u: _            // 禁用发送中断& N1 _% T1 ^7 z# V0 H+ \" H# k
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
) X4 n5 k/ U5 O" k: ]        }' Q$ i+ g; [, e$ n9 ~: }
     }# g  ~4 G& q+ M
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
1 o; b7 Y. u- \! V" t% D# w2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
1 K9 |% ^- g1 ?( U1 c那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
" C* u4 u8 D% D9 e* T1、存在所有可以访问的 RAM 空间都可以
) `  |* h: H" X0 g) q2、因为每接收一个字节就产生一次中断 ...

: T4 @7 x  Y/ @; ~  a1 x那下次中断是怎么触发的呢?
0 t: _9 C6 f2 E% M" J3 m
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43' `( ~" e5 ~; K
接收到下一个字节
4 h* `$ b) Y. T4 o& i* \
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?! b+ K  n: c! z& j' R. l& @

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
8 r$ f: @7 G. X2 o+ I没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?. N; S. B( S9 ?% G' w/ @% ^# A
...

2 L8 F& h5 V' \+ D+ J手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
$ w& [6 {  k) Y; Q! }
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:279 M* ^2 x! Q# Z0 q. c8 R* M
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
$ h+ Y) u9 f9 p2 E7 Z
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
8 |5 d* J, Q0 I1 g4 Y; n4 e( `$ l手动使能发送中断就会触发下一次发送
' E. x/ o' W  f4 K0 V' v+ l
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
- h1 B& [# P, ]( L您好,我想问一下如何手动使能发送中断?
# G  Y9 P; C7 o- X
您好 不好意思回复晚了
( i; m1 v% U$ c. w+ V8 H应该这样就可以了; w# E" Q5 ]' }$ I2 w+ ?& q) N
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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