嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问" F3 b9 J' j) A7 i" g3 c  G5 m; S% K
1.。DSP解算出来的数据是存在哪里?$ t) v: ]& {& m" a: _: G
2.。在例程中有这段代码:9 \# a- H3 b% h
unsigned int int_id = 0;, ]. p' A$ _6 Z9 q& ~; g1 l' u

6 k, F* L. a6 e0 E3 Y5 }  v    // 确定中断源$ ~$ g8 N/ }' B  |( {6 `
    int_id = UARTIntStatus(SOC_UART_2_REGS);
6 M7 N9 ?% }% Q4 j0 q# d- Q# r$ v8 G) l
    // 清除 UART2 系统中断; D2 B9 k8 P) f8 z- t
    IntSystemStatusClear(SYS_INT_UARTINT2);
" X4 X4 a6 I4 I4 e
/ B) `0 L& t, a5 p7 c7 m7 _    // 发送中断1 N8 N" L3 P1 }9 ]
    if(UART_INTID_TX_EMPTY == int_id)( B9 q! e) N' [, S- y# f. Y
    {  I* S  e1 Q" b% c" [
        if(0 < length); _! F# {% {! d* h; {
        {. ^8 Y8 o; I3 }
            // 写一个字节到 THR( @6 b, F) Z6 ]% Y1 L8 d" `( _
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
2 b8 H; y0 H9 I' H. d            length--;
, w. q6 s. q: K  Z            count++;9 ^+ \- N) S( {( H( {
        }; b' ^- B. l1 \: \
        if(0 == length)
9 t* [* p) Q* y0 U6 q5 S        {9 c2 D( }' t. c  Y% P4 C
            // 禁用发送中断
' l4 b7 R  {, n% j; q2 Z! n            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);' G+ ]9 {+ F3 T# h
        }' m/ ~; f( v7 d0 r) s# ]
     }, G' e9 ^/ i( f" g4 ?( v1 H
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
+ Q9 S' a3 F" P$ |  n" }5 k& C5 g2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 3 H, i1 {! ~, ]2 g5 j
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
. o, t2 N# ~% {% A4 W! a6 o" @% S0 A1、存在所有可以访问的 RAM 空间都可以
8 Q- ~+ {0 y; U' ?2 f2、因为每接收一个字节就产生一次中断 ...
; Z' G4 N. s0 i$ J* n
那下次中断是怎么触发的呢?
6 ]2 C. b) L5 @7 I4 q% f2 ?0 t/ z
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
/ W* D8 B& D; y* g; s! s& s接收到下一个字节
* X9 x0 M7 f. Z
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 J) P2 q+ V- B5 i

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43' l+ Z4 ^7 F, J3 a/ y# o- ~8 h: S
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?1 T; r0 P# E: l6 {! J# i
...
. z3 V+ P/ P' L- P( M/ \* w# {- j
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
2 w8 ^- C" H7 R" e
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27, v* R9 G6 K0 I2 w5 K  D! R+ @
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

' v1 ]4 T; r% M1 C" |你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
+ K1 U' `5 L- d- {/ T手动使能发送中断就会触发下一次发送

9 n: @* v/ K: P" P您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43/ C2 G+ O; H9 @2 Z2 G
您好,我想问一下如何手动使能发送中断?

0 }5 T' [; m  v您好 不好意思回复晚了
- o# C- g+ q+ F+ r  M$ a( [应该这样就可以了
4 n0 S, U+ z9 T- L0 D% E+ X2 Z1 J    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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