嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问- R  m  ^& x; r/ N& E2 r: ^
1.。DSP解算出来的数据是存在哪里?
+ z% {5 p, ]# P  M& h2.。在例程中有这段代码:
4 W2 ?& F" z% h/ d5 L/ G unsigned int int_id = 0;9 i4 m2 n1 A; k7 U$ t4 v

' u; {, a6 h6 [    // 确定中断源: _, U7 f4 j# `  G
    int_id = UARTIntStatus(SOC_UART_2_REGS);4 T; P0 s  x+ f  F
! h7 Q7 y$ j% T) d+ \
    // 清除 UART2 系统中断
* ?7 ^( o+ [2 p) b; r) i1 i    IntSystemStatusClear(SYS_INT_UARTINT2);# p1 B! F; z. H2 [2 j' j

' s7 H' W6 Q: G" y7 b$ x    // 发送中断
4 S/ |0 J# A, d    if(UART_INTID_TX_EMPTY == int_id). E  Z, W9 d( a% Q4 x5 [
    {$ k, C! @$ U/ E! ^" ~
        if(0 < length)1 u$ \" f4 `% R, e8 w
        {" H/ E3 [% r. Q
            // 写一个字节到 THR- ]# {4 ]: r' q/ O0 H
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
# L3 u3 |. K* P, N. G! P9 p/ P            length--;7 @4 M6 u. b/ T( S3 g6 v4 I$ T
            count++;
: b" a0 T9 O& f( o        }6 _3 ~- S, K. Z) c: T" M
        if(0 == length)' L) i) `. D; C
        {) `4 m9 h  k: B# I! c# I
            // 禁用发送中断
8 R5 [0 g2 ?6 B& r" R/ z6 h- ]0 N2 d            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
$ a# t( R  ]  ~7 J+ H, l        }
& c; {! x4 Z, t9 ]+ I8 x) _2 S- C     }
8 d" p  G5 @4 R( m: \, x我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
" _. i! N7 W4 |2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
4 e3 V( B" X( B, i那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29; W; \9 A& W) K8 W  @6 A9 O4 P/ e
1、存在所有可以访问的 RAM 空间都可以
( @8 }# x' d1 Q) H7 u2、因为每接收一个字节就产生一次中断 ...
) p3 N$ k2 ]& U
那下次中断是怎么触发的呢?3 L, v6 z/ N/ q! n4 x

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
, T, z) A2 z2 w! I接收到下一个字节
0 I# a1 q, H- ?" P
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?( \  C' H+ U5 C

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43& U* Z9 x& w! A+ U- F
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
# r9 A! D" O4 q' i; f ...

6 v& H2 K( [- l手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦$ B. Q1 W* u, c* F! H* m) R

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
! z+ o2 c# v4 w! w你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

/ b: k1 r/ A" A2 s7 w你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33% o6 d+ D: h" |
手动使能发送中断就会触发下一次发送

; f0 Y: Q& ~6 d' @) p您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
8 I/ T1 G4 q, [. K您好,我想问一下如何手动使能发送中断?

, z6 G( U/ w6 R" c您好 不好意思回复晚了
' f: \, r$ E% ~+ a5 k应该这样就可以了( R+ N% Y: ]. P- K
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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