嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
' |% E/ e: \) i/ t1.。DSP解算出来的数据是存在哪里?
0 e5 q! _5 Q" x2.。在例程中有这段代码:
- M4 L  `3 i, x7 A1 z6 o unsigned int int_id = 0;+ a. j: ^  V$ f& L

0 t. y: p; n; A: @3 w    // 确定中断源
, {! ^( s! D) e; k$ Y    int_id = UARTIntStatus(SOC_UART_2_REGS);- k3 u$ g$ r7 i! z" q
1 L  w. N0 L+ I3 S8 ~
    // 清除 UART2 系统中断
/ e9 ~- Y0 }, P9 e    IntSystemStatusClear(SYS_INT_UARTINT2);) t: ]: C4 ]% p3 K5 [9 }

, c" }0 }$ f2 d# C3 ]( J& z6 B    // 发送中断
" d- n& g- W' \; J7 m& j    if(UART_INTID_TX_EMPTY == int_id)( v* `9 n5 T/ w; @- Z  V7 q
    {
; h# y  p6 M( i" \6 H* ^        if(0 < length)7 s) t% W* O* T, I7 x- a
        {
; E6 t9 D: x$ }9 C) H3 E            // 写一个字节到 THR* G5 N3 Q6 x2 O* L
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);% W0 u$ ]' I/ ]) H& y% G
            length--;
- ?* `  c$ M- }            count++;2 O2 s5 d% o" x+ u7 [- u# C5 F- q
        }! O( ?; h. |9 A# u% \! I8 X
        if(0 == length)/ g* Z0 q! Y# v& a' q
        {. Q2 _  F  ?3 A) p4 B  n) i0 N
            // 禁用发送中断
- G1 [/ N9 j) b6 H& p( D/ G$ X            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
1 m* I0 J# L+ F: g        }9 v, e0 E& B+ q$ c" o4 o7 @
     }
. F2 |! d/ D$ a7 v/ H我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
* }: `/ m/ ^. p, [% U0 `; L" G- m2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 ( _+ q* n1 Z5 s' F8 W
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
1 O; w9 G% }% R6 V  \: X; Z1、存在所有可以访问的 RAM 空间都可以' K% w4 N: }. g2 X) B
2、因为每接收一个字节就产生一次中断 ...

7 o0 v* Q: A1 G- w5 `+ P那下次中断是怎么触发的呢?
( X# p" Z8 q$ f! R( S3 ~  |# T
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
, M) x( l" J. a2 W- d6 ?接收到下一个字节

$ y+ A' H, e$ y. `$ |5 W' ]& j没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
( p- ]9 d/ E0 Y
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
: p/ _; t! _* d! t! A  c, Y- r没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
6 K6 n( P" z+ W3 z: R9 G% m% w5 F* R9 S0 } ...
, Q& I6 A: d' S+ r
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦- M8 b. F9 Y- m$ [

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
* f9 q# Z6 x; |你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

' L8 F( q" x6 z8 r4 s6 |, U你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
9 ?1 j- Q, c  J$ c& \5 v手动使能发送中断就会触发下一次发送

  U- I( {! Q2 q* ?& G# E1 `) w7 c您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
3 ]- J7 A- l1 q! Z1 r您好,我想问一下如何手动使能发送中断?

& h. Z9 p2 [, }2 B1 ?您好 不好意思回复晚了
* f1 d& i0 ]; m* U/ ~应该这样就可以了: X" }9 p& P8 }2 i+ ^4 M
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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