嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问- i& t* r5 \( h
1.。DSP解算出来的数据是存在哪里?
% L) x; o' U9 O7 h6 I2.。在例程中有这段代码:
2 Y: G! B, p5 H2 x! Y6 j2 d8 G unsigned int int_id = 0;% y# R# |0 u- v4 t; j5 F! h$ K" x3 {: P

& I. p" O! U, K6 Y% x9 x4 ]6 ~! f    // 确定中断源
- l$ X, B' g# x6 \    int_id = UARTIntStatus(SOC_UART_2_REGS);
! j3 s. L" I* [4 V/ ]4 }& p
. {" p* I9 R+ y  r: S    // 清除 UART2 系统中断2 N4 t, K) G5 P9 m
    IntSystemStatusClear(SYS_INT_UARTINT2);
" M! h. d1 t* E0 F
- C0 U" y$ y2 V: @3 N7 [+ H    // 发送中断! d& M0 t9 b% }- \
    if(UART_INTID_TX_EMPTY == int_id)
2 \) D# L% m# J5 S    {  _) W  H, C: R3 _$ Y
        if(0 < length)/ h  D$ h7 }/ Y+ T$ g' e
        {  M8 X1 v$ J: C' |
            // 写一个字节到 THR
! O+ v( Z/ K* p+ B+ l; @            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
: M8 Z( B" r' R! j  l5 H/ ]( R            length--;7 F( \; e6 k& T
            count++;4 T8 Z* p4 o( f, k% C
        }
" ~3 m; N9 h% f* @* Q. }8 D, W$ T        if(0 == length)3 L5 \+ Q, E% r, B; e# t2 U+ R+ ?
        {0 V' H7 d+ n% J* e5 }1 d
            // 禁用发送中断" A, T$ k& P; }. j, I. E
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);6 |3 A1 t. o: T; v( D
        }6 ^9 W/ L% H2 S8 p; X/ R
     }
7 a& R6 E# L8 Y; O我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
1 ]/ R% j; f: u" c2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 6 f- T: L. x' H" d, p
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
: i: k$ x. b. `0 t- D& w1、存在所有可以访问的 RAM 空间都可以7 Y0 }- F! S+ W: u! V: L
2、因为每接收一个字节就产生一次中断 ...
" u& b. M" s" T$ Z0 B4 f5 ?" j
那下次中断是怎么触发的呢?# k' K$ i& b" F1 P- l

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43& w& y: \8 `: {* x) r; U6 j5 F
接收到下一个字节
* |; X" A$ s3 E& b
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
* y  Q; _7 l+ j" L4 ]: l! j
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
7 v/ l5 Q7 L/ p9 ]& C# b没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 N1 B; e+ v6 J' s& }- Q
...
: ]# F( D; @* ^
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
) k  Z+ W* x8 {; c
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
9 A$ \& _; C* s$ A你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
) I! j1 E5 c3 s9 L
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:332 e" I! Y7 `" _1 z9 X8 X% o& A/ `
手动使能发送中断就会触发下一次发送
# y; L5 t. m3 w5 S9 v& G  R8 ^) Z
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
- I6 w) M1 e. z5 _4 h您好,我想问一下如何手动使能发送中断?
: r4 H7 v" P1 C' c, M9 {5 E. B# K& `0 n
您好 不好意思回复晚了
9 T: j; h+ P7 o/ o; Q9 a& g应该这样就可以了
! u3 `9 l! z1 X, W: m& X8 F2 _    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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