嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
: d! s+ o0 v+ X! x( z1.。DSP解算出来的数据是存在哪里?7 k' u* Q1 l1 G! x
2.。在例程中有这段代码:3 t/ Y4 L! [- y& |+ J
unsigned int int_id = 0;
1 F& N) v* T/ h! N  \% o9 Z+ h/ A. S" P
    // 确定中断源& @1 }7 z2 f# O
    int_id = UARTIntStatus(SOC_UART_2_REGS);' s, @2 s2 a9 F! }
7 Q6 X6 ]9 e2 }4 f0 c) F8 f
    // 清除 UART2 系统中断
4 I3 m$ v- I) k8 T3 n" ?) Q    IntSystemStatusClear(SYS_INT_UARTINT2);
/ V+ Z1 `5 n' F5 o' p
; ~( K. Z' g. Z* E  M    // 发送中断' `* t) E$ F, _7 [7 t% B% ]( U
    if(UART_INTID_TX_EMPTY == int_id)
$ e; ^0 C% w$ [# Y    {6 G4 G+ p! W4 Q, y+ ]  L0 T
        if(0 < length). j0 V/ U  O8 w7 E& |$ X
        {
# s7 Y, @2 p- g- p  U, y            // 写一个字节到 THR3 I/ q5 r% `( o: t5 y
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);7 M* V& e) x' ?! v
            length--;  K0 R; B; A3 i7 H9 j% V8 S
            count++;) E5 S, N) _7 r5 l/ T! r1 A
        }: G& Z5 q( d0 U6 V; t, j
        if(0 == length)8 A6 o1 |( \3 s: _  R2 M! B" Q: A
        {
' s: ?" j  x, i# T! d. {0 ?, B            // 禁用发送中断# Y5 L' Z9 `4 x" q
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
) a2 x* M9 A$ A        }
/ F1 H2 L9 z6 f0 x! p* x. ~     }0 e; B3 ^/ s% ~" N
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以6 s+ \; ?3 _( {' {
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 5 d4 p7 y$ A* O. k+ m
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29- _7 j# \& [+ z  j
1、存在所有可以访问的 RAM 空间都可以
' D. ~& a& Y+ ^% q7 i$ A4 x5 A5 e2、因为每接收一个字节就产生一次中断 ...
6 V1 m% P5 ], K6 ?9 l
那下次中断是怎么触发的呢?
( s5 j! o9 y! e! Y
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
' l% i+ d. N6 Y# _1 f接收到下一个字节
6 A/ J( u- V7 ]7 N3 Q8 b) m
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?  I# c  y4 ]  u2 ^* V

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43! p- I9 `) N9 V* T
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
3 Y$ R9 k2 k# O+ e) t% s: T ...

0 K; K+ q" I4 A" |! ]手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦* e' H" L& S2 ?* k& s& L

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:276 |! x4 u$ z; b, n# A: }0 V
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
7 D7 a) G, K) |: Y3 t
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33& X$ D9 {7 b  _3 s( D( l
手动使能发送中断就会触发下一次发送

3 _8 Z0 Y7 |- }: {* q% |0 [您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43% l+ z4 ]& A2 Y3 ^
您好,我想问一下如何手动使能发送中断?
3 [$ F+ B& e; x6 c5 z' @
您好 不好意思回复晚了
4 I' S6 |+ A3 N应该这样就可以了. T$ G9 K, ~+ p* y3 t
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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