嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
8 f2 |+ |( B( G( v1.。DSP解算出来的数据是存在哪里?& v) e1 P: t3 m7 p* N
2.。在例程中有这段代码:
" ?5 \; t4 I8 \) Q) c  ~& |3 `; W' X# W unsigned int int_id = 0;* }; @" r! ~; F5 g4 g3 J
; y! q3 a: v. Y7 J
    // 确定中断源
% S6 ?3 }/ k9 ~$ S    int_id = UARTIntStatus(SOC_UART_2_REGS);
4 `! I8 D! P0 L: @  h
$ E* i0 K' k0 J# P) s    // 清除 UART2 系统中断9 W! O" s, a% U, E; P& e4 [& F
    IntSystemStatusClear(SYS_INT_UARTINT2);8 D* V! l; U* P1 Y
" |% ~/ ]1 j/ E( J  [. n  G% P
    // 发送中断
$ i; {) X, N6 i2 {- V6 a    if(UART_INTID_TX_EMPTY == int_id)
  e4 W- r5 g0 T) i    {/ T1 g7 U) E* D- m8 X1 w# d# R
        if(0 < length)
& a0 y( }7 e. W  l1 m) f2 p        {8 v7 x5 r  h, ~- o* V% |/ F- d: X
            // 写一个字节到 THR
0 R: _; G4 a+ [4 M$ `4 X  ]            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);) G- N5 s% m- b- S  p+ @
            length--;
$ t& }2 Q. `7 _' _2 y! ]  V) v            count++;
9 V1 v7 F7 ~. c4 L2 V        }  F" D4 D, s( ^" ?# @9 E+ V
        if(0 == length)- X, M' ]8 Y8 o( a
        {; M, C# d. a. F' N! M7 {
            // 禁用发送中断% H9 J' `& z6 Y' D( Q1 u
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
$ T- |% Y1 q4 g/ x1 l8 Y  Q2 ]        }
0 l# O' O6 _* q) E& @# m, Q- p, L     }
' I6 ~$ c! T+ i# N7 q* g  g# K我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以7 f" V% k/ U; S( V3 c% B4 d. k
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 3 s8 V( h9 Y. j6 _! h$ y7 p
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
& a/ z8 a* c' J- L1、存在所有可以访问的 RAM 空间都可以
6 a/ b+ P5 N) m& K1 q, |2、因为每接收一个字节就产生一次中断 ...
5 Z% D$ |* ?& Z
那下次中断是怎么触发的呢?  _6 i: Q% u$ v" I* X$ W

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
% A( a5 p& t& @4 J- x9 f接收到下一个字节

* W* p) o+ ^. e, }* T没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 V( c, H0 ?  R$ N2 ~

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43/ l# ?2 P2 g" b3 p3 i
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?: M. U$ f6 E7 m; }, M* x% L
...
  g7 t! a8 D- X; [0 ~. |
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
" x0 G  |, }; `( F
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27: ^# Q* v* M! {. h0 `( u
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
8 G( I" u, J1 D; s+ _. l1 q
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
4 z2 m" u0 V, ]1 w手动使能发送中断就会触发下一次发送

- R. p9 p! R4 q' ~您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: X; p% O+ d+ U: N& J1 V  Y6 L4 l您好,我想问一下如何手动使能发送中断?
. x5 Z* o3 g0 K  S
您好 不好意思回复晚了
+ y( c, ~# \  X' G1 A6 t1 q应该这样就可以了
8 M; l/ F' D5 l% ~+ X- u$ c    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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