嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问- O* q9 V' s+ k) C; b7 V1 G
1.。DSP解算出来的数据是存在哪里?
2 q+ L- `& k4 J8 Q- u7 m2.。在例程中有这段代码:
1 c1 H& x7 N  G0 v8 [  t- Y% N2 W- o3 u unsigned int int_id = 0;
" H) G. C8 j, P5 ~  o1 x( Q- k9 S- s% y8 X% ]# w& g
    // 确定中断源7 }, D1 w1 T& b/ J( i; Y1 w* M
    int_id = UARTIntStatus(SOC_UART_2_REGS);
, c' P1 S& f& C6 e. L8 ^+ o/ @9 ]; {. h( W6 ~
    // 清除 UART2 系统中断
1 \" P) C7 s+ f    IntSystemStatusClear(SYS_INT_UARTINT2);
, Z: E  k  j$ f% K6 b3 w; |% X) l3 {1 d. j+ D. k7 p3 q5 ~
    // 发送中断
2 g! d  B2 A# J. z0 m    if(UART_INTID_TX_EMPTY == int_id)6 I5 L) w8 e+ Z  R( I3 D
    {) t& W! v# @! e4 n6 H3 _+ J2 U
        if(0 < length)
. m; C4 B9 x( q, O% v9 A$ K        {8 q7 b" |7 D0 k$ q9 T: F$ Z0 P( w
            // 写一个字节到 THR
/ o% p5 B: z% t! x4 ~- d5 M            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
: M: _' [: F" }* O/ p+ B" D  S            length--;1 @" d/ X" M$ r$ F* f: `4 Y8 f
            count++;
$ V, S- n0 r0 ~, {        }
4 T, {; J& B0 _3 G# E        if(0 == length)1 n0 ~5 u4 `! E1 F; D0 l
        {
) ~8 R3 g$ u8 J3 `; e( H            // 禁用发送中断/ ]4 a# t9 Q) \. I7 M$ ?
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);# g- B5 b1 [& `/ a8 R4 M: }
        }  x  p' C- ]' u# {  |* B3 Y# r5 `
     }/ g% m% o. E+ s8 @: ?+ K( T% }# K
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
' J6 q' |$ ^8 @# Y/ m+ j: X4 F2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 6 K6 N5 D0 A4 t
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:293 L, ^2 Z' n- f# B- L# k" G
1、存在所有可以访问的 RAM 空间都可以+ J; `3 ?( l2 i$ _+ r
2、因为每接收一个字节就产生一次中断 ...
) b4 f' F+ M3 {+ I2 |7 e* x1 Q
那下次中断是怎么触发的呢?1 \- \8 H3 R/ D. v

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
8 u' I' J5 y% }( T接收到下一个字节
6 o8 w0 F8 x0 e9 o5 J# ]2 w
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?+ i4 i0 I  Z" k/ [, _9 K. q

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
" O" _: [( x, D' O. e没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
1 B- A6 l# h# Q0 E6 o# T7 Z ...

& ]; \+ [) C3 J9 }! }手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
* W9 c; l7 R' U: X
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
4 t( B7 S" K: D3 V  Z! i你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

8 s( _: K8 P# z& ]/ m你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
; }7 J, ]/ l2 A8 t& o手动使能发送中断就会触发下一次发送
2 @# f) m( z" @% M/ m3 i+ G% E9 |
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: _2 t, d2 q/ N# F6 E% h您好,我想问一下如何手动使能发送中断?

6 M) I  o2 H& l  R7 s" x" E您好 不好意思回复晚了
7 @% q, g% E  ?% b) ^4 F/ v" P应该这样就可以了
, ^) |  U4 Y0 q' {0 M" M9 T    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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