嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问+ }9 a# J3 K0 C. e( l4 K% \
1.。DSP解算出来的数据是存在哪里?% r- |" P- H& U. ^4 r
2.。在例程中有这段代码:
- F* @3 u6 W0 u! V- F* ^ unsigned int int_id = 0;
; v) [3 j9 _$ X  `+ `  J- w# L* N, O- ?& [7 x4 K9 U8 \  ^1 H$ e& n0 c
    // 确定中断源" v- N! M8 i! f- k  B5 r$ t
    int_id = UARTIntStatus(SOC_UART_2_REGS);* F/ ^. g- I. @( O7 e4 R6 D
+ z* A0 W4 B" q% o1 w' E
    // 清除 UART2 系统中断
$ X% G! K& a- x# T    IntSystemStatusClear(SYS_INT_UARTINT2);7 r  b% b- Q3 b1 f0 z6 T% ^% z$ j

, I1 i. V. Z8 t& @    // 发送中断
8 ?0 ~8 [6 m* c0 Y' a+ Y    if(UART_INTID_TX_EMPTY == int_id)
+ G8 D6 V* R/ `2 v    {' l2 a4 N+ T/ \2 b
        if(0 < length)
- d* }: V4 z. I( @- m        {% n- \' K3 S4 D' I( n* w
            // 写一个字节到 THR" q- @$ t, r' r: K* P1 H8 n/ @$ H+ e3 U
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
' u7 N7 \6 Z. A) r! I; f) z            length--;
4 `4 N8 `- L( z3 m6 Y6 P2 W& z# l0 v            count++;: J2 `$ _. l7 z7 D5 Q+ m& g* C
        }
; x: i% J1 ?, o5 H/ i4 r2 u        if(0 == length)
$ @( l" I4 u) ~3 c% w. T" l5 y5 b        {, [' A& l* \8 f' w! t; V
            // 禁用发送中断
7 C( ?. j/ ]3 o8 C: U            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
. X+ {$ S8 R& U5 r* f4 B% V        }4 e9 V5 s% j9 c0 \1 a1 A' u- w4 h- G
     }
  I, M2 K1 d1 Y, R0 i我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
) H4 t" `( ]/ A2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 6 }0 X/ ]; ?9 E0 }" U5 r
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29& i! {7 q( o' g/ e! ^
1、存在所有可以访问的 RAM 空间都可以8 d9 w( _" M( l
2、因为每接收一个字节就产生一次中断 ...
' q$ A' [, n/ N# E% i
那下次中断是怎么触发的呢?" u  |) X7 [: E

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
0 k# `6 Z; w+ t, E+ S2 j接收到下一个字节

+ ^4 j9 \; v  e3 H6 _8 R# q没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?& O# j5 n4 j  {5 |! ?

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
( b* S9 H$ G; C  k没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?! I- t3 B* v8 o: j
...

3 r6 u. ^  v6 p4 ^7 F手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦) w) i2 W* C! W! I, y  ]

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27% I& N0 K) s9 X! {& D* o
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
, S. p$ r" v7 b, h8 |& e; y, ]
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33- J2 ]# C: I  l4 U1 w) i
手动使能发送中断就会触发下一次发送
( _" c3 m2 D+ B# f
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:434 Y4 t4 f5 F/ i/ D. E( Y) L% o
您好,我想问一下如何手动使能发送中断?

3 V; b, [2 I; ?0 P$ g$ Q1 J6 i您好 不好意思回复晚了 . J( u1 ~% f/ B# x& }
应该这样就可以了
) e, e. q# s( ]) v    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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