嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问6 M5 _# ~. U) I4 P& \# k7 x( w4 z
1.。DSP解算出来的数据是存在哪里?
+ E4 ?% o  r7 I% a0 r, h2.。在例程中有这段代码:
! ?" w. c/ ~5 |+ f+ s unsigned int int_id = 0;6 H% j/ @0 C  g) g7 y' L; [/ X

' k- `$ H7 U8 Y* B" g+ z* ]6 H    // 确定中断源
7 h4 P' m5 b* }. i$ t    int_id = UARTIntStatus(SOC_UART_2_REGS);
6 ]8 p( g6 n9 [5 a4 [0 n1 t9 q3 |* h9 x& g! l
    // 清除 UART2 系统中断
# Z: U) x' r4 n    IntSystemStatusClear(SYS_INT_UARTINT2);  S# B+ d2 y# b; W$ M) c
) a) j' D: ~+ S2 P
    // 发送中断
* p8 U, [; r6 e+ y+ Z. @( B  ~    if(UART_INTID_TX_EMPTY == int_id), |# z; v# p: Z0 c  G
    {8 h1 d' {( r2 S5 h" j3 \4 z
        if(0 < length)
; p/ ?( t0 R  H9 N& ]9 {# @8 ]# h        {5 ^6 s% J6 i# B9 @, r! I- x
            // 写一个字节到 THR; k! L0 E7 ~/ l+ ]" F& D# T* j
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);; g* G$ K; x5 r! I
            length--;7 a/ T8 J, D3 e& i) ^  |9 p, u0 S
            count++;3 S8 i9 p7 D0 o% O. c6 D
        }
4 E0 V4 j& Z) N5 o# y6 n        if(0 == length)  w$ W0 }) T9 c0 ?5 |& Q
        {
/ b) W3 F; j( W$ |& W+ s( }            // 禁用发送中断) B. E, Y0 h8 b: U0 K" s0 n
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);6 X  g% V) K5 P: U; D7 A- k
        }
6 w: n+ O9 Y2 z2 |6 H     }- G) |, z. `) W7 l6 S& S
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
! n# _  ~; u; x2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 % J9 H- P; p6 B! I' B" O. l! Y
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:294 I6 U" ]* U/ ]$ ]4 W# p4 v& X
1、存在所有可以访问的 RAM 空间都可以
2 }) @; B2 P3 n7 O% R1 S' z1 o! Y2、因为每接收一个字节就产生一次中断 ...
" B0 O% @$ ?* r  p/ C5 T9 a$ Z  E
那下次中断是怎么触发的呢?
2 K- G/ p6 r- r/ }
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
$ R$ c& S- j' G3 l+ B接收到下一个字节
2 @+ p; m" r& a2 q6 ~& B" a
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?6 B9 X8 V$ b1 p* V. U. i; s9 _

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43, b/ \2 l0 |2 ?, y
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 Q  W# D" Q7 Z8 ?  Z9 X  L
...
, J5 f; y/ z. L- ?; v
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
$ c- w% D0 t% C4 I/ i6 w
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
& P: t9 ^4 d  N3 W你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
% H7 T- q/ I- X" b* P& Y3 H; t5 K. w
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
5 l. P4 K3 G: H0 b9 `1 F% {6 T手动使能发送中断就会触发下一次发送
3 c$ Q# A6 r2 R' _4 ?) X
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
; P3 W5 B5 s# `( H! [您好,我想问一下如何手动使能发送中断?

0 ^7 B9 u$ w. Z4 ^您好 不好意思回复晚了 9 U: M. h% i! {0 x5 g
应该这样就可以了0 ^: Y- c9 ~& m
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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