嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问3 f% P3 F! t- F: o8 T1 _+ P! _
1.。DSP解算出来的数据是存在哪里?$ N9 V# P1 x. v* i0 `0 X. i7 x
2.。在例程中有这段代码:
. O7 k( I, L& n# i/ j! G unsigned int int_id = 0;
9 {% I, }& L) a3 l% ]
: L3 H8 i2 W+ T! v- q" T/ m+ A    // 确定中断源
1 J* I& c# J: s' D' h/ u" l7 Z5 q    int_id = UARTIntStatus(SOC_UART_2_REGS);
5 e$ @+ H. z* @- z' t0 K/ }' b! d9 W6 G6 h2 Z+ x
    // 清除 UART2 系统中断
1 q. q+ {3 p8 l6 y: c- ?' \    IntSystemStatusClear(SYS_INT_UARTINT2);
3 M, Q- O% x( h7 L+ b% e6 u2 a& e$ |! U8 Z& l
    // 发送中断
9 ?  w# Q# A) G6 U5 P    if(UART_INTID_TX_EMPTY == int_id); @$ b# Q6 O) s9 e- e
    {; D: N# U, C( U. w$ b5 G
        if(0 < length)/ }( Y/ a( L# E2 f2 d/ R+ m
        {. q# Q7 j( ^, l
            // 写一个字节到 THR
; S  q& `4 B; Y5 n. z8 Q, q: U            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
  |6 X: O. X; M% ?            length--;/ u& k0 z1 r! a$ e
            count++;6 \  y7 j- i1 O; S3 v* c
        }) I: t% N& m- G8 n2 y% V
        if(0 == length)
, }+ o: }" D9 _2 S; J1 u5 Y        {# z! r. h. W5 o
            // 禁用发送中断# T4 `/ D" s$ j  L0 @, I
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
3 T. |3 @% R- j+ H/ n( E+ X        }# i. ]; H7 c1 @- H9 Q5 ~0 |
     }3 W& C& J) u0 t2 x& d1 i
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以* F3 D$ p8 S+ I4 i) A' C
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
5 ]4 {: O* V+ {. \# O那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29& l( q, `1 I; s1 h: d* p
1、存在所有可以访问的 RAM 空间都可以
- b# u0 f; i0 q2、因为每接收一个字节就产生一次中断 ...

2 J, O! s$ [5 k5 M* d那下次中断是怎么触发的呢?
' H- ]4 N- B- M5 V. E; v
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:436 n1 Z- C6 N+ N6 O
接收到下一个字节

% R( p7 _! _8 t2 T# f' |没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 W4 a1 x6 B* H4 r

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43' h6 H1 B& Q' O% ]5 R
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
% \5 K0 ?4 X& ~0 G& W ...

/ ]7 Q8 B- \4 B' i手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
: {# s/ y" v) Y6 Y
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27& A  r& o" _! D- V" ?
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
2 v# r" S& V" L( F# N( h4 }* L
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:334 W( }! [7 \  d8 Z% n/ S
手动使能发送中断就会触发下一次发送
& a, p) G( c1 H' k
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
5 r& c: Z( F. Q9 V您好,我想问一下如何手动使能发送中断?
: Y( I  s1 }& h; _' t- ?
您好 不好意思回复晚了
; O7 F3 I$ Q9 m应该这样就可以了- L% J# S9 W/ V, _) ^6 V
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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