嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
! R1 [$ `- b# Y3 Q) @1.。DSP解算出来的数据是存在哪里?- A+ E1 r# h# V  |# s3 I& t4 V
2.。在例程中有这段代码:  O/ M+ U! e6 ^3 k! u
unsigned int int_id = 0;3 h% i+ s6 d* _/ D0 m, c
) n8 A( Y% A& F2 A& @
    // 确定中断源! D3 v/ W6 R/ K: `
    int_id = UARTIntStatus(SOC_UART_2_REGS);
7 C$ o! P3 V) Q, E0 h& Q( b" `: [! f+ i; I
    // 清除 UART2 系统中断. A  m+ M5 I! l
    IntSystemStatusClear(SYS_INT_UARTINT2);7 \7 L  q* |% e

* v$ G6 A" Q2 C    // 发送中断
. b; t, f4 Q9 K. j1 x2 K7 X    if(UART_INTID_TX_EMPTY == int_id)/ Q  C4 A9 f/ T3 E! {
    {
2 w0 P2 T4 Q# j0 M1 z) t2 w        if(0 < length); D* x  n2 g& d7 Z" N) {
        {
$ H9 u/ f: A/ {            // 写一个字节到 THR/ L- v- s$ q3 f- o$ ~. B
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
! t7 l9 e$ V9 \! P* \            length--;: v; V4 n; R' m+ B6 t
            count++;! Y" q# t0 @9 _# h
        }( M/ u4 w) O0 v/ {( p
        if(0 == length)
; N" `) U, \! O4 o3 p5 `/ S        {
" {( X" \# r: o! {/ Y5 h+ `            // 禁用发送中断
! W# ~* L& ?% X1 t1 k3 b            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);# H  k7 k% B2 l, z0 G
        }# k; }6 R  m$ _. u6 A; V
     }
( k. T( v) n. x$ d+ D% b+ Y& a我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以: i9 ]' C0 E6 g# y# h
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 # F. S( M+ N& t% B) g* h/ T( w
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29$ K2 O5 t8 ~; s: r* g; i% `& g
1、存在所有可以访问的 RAM 空间都可以& M9 J4 Z, w/ G5 i5 L0 T
2、因为每接收一个字节就产生一次中断 ...

$ c% x6 \! Y3 {) l- D( o那下次中断是怎么触发的呢?
9 r( n; ^2 Y! Q4 g& V$ q
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
# y) t- u5 \6 _5 I* }接收到下一个字节

- c/ b9 g" l7 |$ I  v4 U8 J没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?, F% L, W8 N1 q  ?

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:432 C7 i3 U! ?/ i  ]! t) n
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
* ]8 C# h# w( d( |* T ...

/ x# O- Z, Q" U8 K' D& i1 C; p手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
) _  C9 T% J% p( m9 R: ]
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27) A6 P( l7 q7 J4 p
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
. T; w; B0 D. m) v
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
0 P: d3 D) ]9 y$ O2 O+ k7 z手动使能发送中断就会触发下一次发送

6 ?0 Z9 i% O( A" W% {, ^您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: N  T; ?! T/ r8 c, ?5 `. [4 `您好,我想问一下如何手动使能发送中断?

( V( A7 P6 e  M0 S3 Q您好 不好意思回复晚了
. q+ W# E7 J0 g; z# k( ^6 b3 L应该这样就可以了! m! T# ~9 `( V
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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