嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问2 |6 d; I& d( I& @' D7 M
1.。DSP解算出来的数据是存在哪里?
6 o% A" g  N' A& s& G2.。在例程中有这段代码:
5 V# O! o  ?/ W2 v, z$ _" Z unsigned int int_id = 0;( N: \7 B: x( L

7 p4 w7 x2 z7 }: S    // 确定中断源- c6 ?' d7 I$ T8 G+ s2 L- S
    int_id = UARTIntStatus(SOC_UART_2_REGS);
% o  r- X' n5 W% |/ \- h3 h4 n! s( x; Y, S
    // 清除 UART2 系统中断& N$ L2 C! d% \0 v& f
    IntSystemStatusClear(SYS_INT_UARTINT2);2 S0 l/ j* G. _6 \+ Z$ z) G
8 }( H' z* y8 e
    // 发送中断
6 y; U/ }. x4 T8 D    if(UART_INTID_TX_EMPTY == int_id)
4 V  d! f$ e# M" Z& o+ J' S4 h! o    {
8 z. m. O& Q4 I# P( L8 \        if(0 < length); d" n0 W5 \  l# A
        {
" p( Z" i* p& W; g7 s            // 写一个字节到 THR
6 Y# ~$ u* K0 t& L1 K4 G6 ?            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
, A* v* f: [! t. y  B            length--;6 x+ _# B0 v$ ]) W$ e# y
            count++;
4 ~! F) Y5 N  J0 w1 [" G. d, h        }2 Q2 M$ `1 S- f. C% X5 D% |. t5 ?
        if(0 == length)
) W# M, u4 X4 B7 e# o$ T# g        {
) E! Y! c& r% v- |            // 禁用发送中断) D7 k  y/ T9 F
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
: R) r6 u$ y9 y7 T( z        }; J; X  y) Z' {8 ^3 w# m7 e
     }
+ I" m- _# J2 V8 K5 N+ L我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以1 ^) }/ Y; w# G( d( z1 ?
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 # K# I) w  b) m" X* Y) w$ A+ }# D
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
' M+ D2 e/ ^7 @1、存在所有可以访问的 RAM 空间都可以5 T2 W: P1 x; B) g$ ?
2、因为每接收一个字节就产生一次中断 ...

/ H' h; C5 V9 R) n那下次中断是怎么触发的呢?
. w( g8 E1 G. ]3 A8 `
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43* g& Y: s  O; j. _% U' r
接收到下一个字节
  i: W" q5 E9 b  S6 R* r
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?+ T2 A* U" \; ?9 [8 T5 O

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
  Q# B( o# _  u; }; [: ]没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
& r" ~* I6 H3 i0 n% R& \ ...

* l$ f0 t% a3 m! |$ m3 ]3 c手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦9 P( {+ e3 f! J. b( E3 U

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:277 b7 Q' m8 B4 q  M% B$ |
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

3 P5 B) ?: u/ N1 h你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33; l  f" h( \7 P: K1 K, h6 w
手动使能发送中断就会触发下一次发送

. P+ k( c6 |& ]/ |您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:436 r3 s) J8 A. J" ]
您好,我想问一下如何手动使能发送中断?

! k2 T0 v; Y  `; R! t. ?您好 不好意思回复晚了 6 U1 j( E; r2 w9 g7 w
应该这样就可以了  e1 W, j6 M* I; |' W" U
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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