嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问; f9 M* s# U7 S0 Y
1.。DSP解算出来的数据是存在哪里?
6 b! s0 e6 d5 D; ~, g5 _# I7 ?2.。在例程中有这段代码:; p9 T, I2 [5 Q; ~2 y" y9 }
unsigned int int_id = 0;7 g# Z) V% M* K

+ Z* {- r2 Z7 {    // 确定中断源
7 }& F0 [: B+ v5 U. u# v    int_id = UARTIntStatus(SOC_UART_2_REGS);
: D1 ^$ p$ G# B6 N
4 a( g' Y0 p( J    // 清除 UART2 系统中断
* F& I1 t. P( s. U7 g$ k7 y    IntSystemStatusClear(SYS_INT_UARTINT2);
- C5 {+ V: v! g- F( @( E0 H# @6 U# z: C" Q9 r1 ~7 H' d' G
    // 发送中断- o1 l! P- j* a
    if(UART_INTID_TX_EMPTY == int_id)
2 a. `) L- w0 k0 h' S+ i    {
5 U. t( g4 O7 m* L$ S# b# L        if(0 < length). L' ~! Q3 m7 t
        {; f& N$ J- b( b% K( V
            // 写一个字节到 THR
3 c* B! H* ~3 @: W0 d2 ~( f            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);7 i  ~1 B6 w4 a0 ^, s+ N
            length--;
/ u$ y- @( e( C6 q' u/ U& p            count++;
; r8 \7 z% y- \7 K& q3 A. j, X        }5 W3 J; s  n8 [2 p' d1 u
        if(0 == length)) E1 E2 k1 g/ U5 e$ W4 o; N
        {5 u. E1 `  f% K( m6 C4 L+ v
            // 禁用发送中断) r( ?8 y2 {! T8 k: y2 E8 ^
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
  M8 b0 u4 A5 N        }( E, G; G% Q; {1 q6 F0 u
     }, ~3 d$ K( l6 S3 X3 ~9 q9 d
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
+ t( @$ |1 X1 q/ H0 Y2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
  m& ?3 u  n! x' U4 k. `. k+ K5 U那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
( e- L  q8 I) ?5 D' P6 `3 a% P1 O0 j& J1、存在所有可以访问的 RAM 空间都可以( U/ U4 q+ W/ y! A' y* x; Q  z
2、因为每接收一个字节就产生一次中断 ...

" k: W2 p/ s4 Q3 R  T& I$ N- I# R9 G那下次中断是怎么触发的呢?$ R" J+ b4 L$ A( K1 K8 W

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
! U  [5 M' c0 r* \7 f: x% x接收到下一个字节
( Y7 J5 _) C+ r+ {- D- z: ~8 E
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?5 G7 @. @' |: f, m2 ?: |) w

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
2 J: ^8 d& y* O, R没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?* q3 p& u9 s4 w6 c+ D4 `
...

* _6 v2 C; l( b1 `9 @5 _9 C& l7 M手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
( M  |' q* d' @( j  N2 l" a
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27- |- o$ u3 B+ t+ b3 ?9 u& C
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
1 U7 F8 o! P" u; L
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
! s' R$ G2 p! e2 M1 r0 c3 b! E手动使能发送中断就会触发下一次发送
6 M4 @& t6 N$ n/ K* ^: v6 @
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
2 ~! l$ E' W4 s您好,我想问一下如何手动使能发送中断?
$ R4 @" U- x7 n4 @8 e0 K- ?$ v
您好 不好意思回复晚了
) K5 m( I/ n  @" q应该这样就可以了) {& h# t: y* p- J# e$ ]' v
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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