嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
% O% p0 |  D  ~. P, p5 n1.。DSP解算出来的数据是存在哪里?
. W) c9 _2 Q4 D6 {4 W9 A- ^2.。在例程中有这段代码:6 v6 B* r; `0 x/ s
unsigned int int_id = 0;  \' g; O7 P' H- s+ f

5 S* m( H# z5 n0 f( s    // 确定中断源! u8 i6 V4 L; b- a  I( s, R
    int_id = UARTIntStatus(SOC_UART_2_REGS);
6 n6 G1 ?8 ?/ ^$ K2 V- d4 k6 z; Y
    // 清除 UART2 系统中断
) M) o4 @5 _8 h$ W    IntSystemStatusClear(SYS_INT_UARTINT2);% A( D& ?- u9 l; z
& t4 b9 R' h: n6 G! ?4 d! j
    // 发送中断' d9 z  Q2 G+ M/ j0 R( \* ?
    if(UART_INTID_TX_EMPTY == int_id)7 [3 G0 f4 ?) y$ g
    {% z( ^% }* W; k7 I1 W
        if(0 < length)' v+ g. T* z" j: T
        {
- P5 ~. D- W# V4 `            // 写一个字节到 THR
: \, D# X' C4 k6 J' h- j            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);2 |9 H, |: m! b8 O5 U3 k
            length--;
  U" z/ E- T  {+ i- Z: e            count++;
' L' Q/ S$ `) h; h        }
$ s: m6 M4 [! ?2 o6 t: L! i        if(0 == length)
" U& K7 D$ O6 ]( J! G# {8 a* |        {3 c- M, r0 |! C
            // 禁用发送中断
: g6 a: s7 i: o* f+ S; e            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);; a. C5 W& g- ^5 j- z5 {. [
        }; H% {) A0 D9 |1 g* ^# a9 u. c9 f
     }
! F2 w! |" Q" J% v* b我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
; [% _3 ^3 w: R1 J0 z# D2 R- N$ }- V* S2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
9 {7 Q4 I3 y2 R& t$ b. i那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29# ~3 k) n, X* K# i
1、存在所有可以访问的 RAM 空间都可以; v. r3 `) d9 u
2、因为每接收一个字节就产生一次中断 ...
2 N% g( Y* N0 @8 D& _+ R
那下次中断是怎么触发的呢?
4 N3 i' m4 P5 P& J' _6 E' m9 w& Y, R
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
* x0 Z6 T- Q! {接收到下一个字节

/ e) \- M$ I9 q% n; h. F没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
2 _# m4 j: p) Q+ ]4 \7 Z0 O
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43" ?8 I2 r7 K! C% r- f( U( v, A
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 D! K1 o! a6 D2 S' E3 ^( e
...
! O5 H3 P. z+ ]1 j6 R' b" z% v
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦: |& e7 C; T$ x

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27+ K7 E& C: m& s! p6 l" |4 L
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

: ~  e# O" f$ E( k: k. b8 E- }你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
% }+ i  N4 ]* P手动使能发送中断就会触发下一次发送

2 p! k4 |) I$ T0 {$ V/ j您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43' u/ x/ i& s0 S0 h$ v
您好,我想问一下如何手动使能发送中断?
) m. F3 g& v  ~( X0 ]4 L+ Y
您好 不好意思回复晚了 ! K& v7 V( A$ u: }+ F5 Z
应该这样就可以了" [: ]: v# f  C$ n1 k
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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