嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问- c  U  G8 |4 [* z
1.。DSP解算出来的数据是存在哪里?
; ]6 z8 [) E/ b$ V2.。在例程中有这段代码:3 u  a6 l- f& }; z0 ?8 |
unsigned int int_id = 0;0 C" f. m$ @+ y: G

+ H3 w$ _4 \+ {, q    // 确定中断源
/ T4 _: f! ^+ O/ D& O    int_id = UARTIntStatus(SOC_UART_2_REGS);3 Y; e9 y$ y1 J# f( b
/ E  w. D" |1 m, {# v6 h' Z
    // 清除 UART2 系统中断
7 v) N; Q8 P) F( U+ p1 J, u: \    IntSystemStatusClear(SYS_INT_UARTINT2);
9 c$ v# L7 o. B
6 t4 H3 ~! I* \8 n7 Q2 b. M% \; [    // 发送中断# d4 O/ N6 R% {+ T
    if(UART_INTID_TX_EMPTY == int_id)4 ^7 F) q3 N, v
    {, f3 w# |+ M. K" x; N5 O5 [$ h9 ?
        if(0 < length)
8 h' H2 T& I) K        {( v8 k+ ?3 m, `- h5 p' Q! B; i( f
            // 写一个字节到 THR4 k$ w9 |: a" o
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);. a4 ?( k. s5 I/ H
            length--;
% z, b1 b, j$ d2 G            count++;
- H  n2 V  G7 z        }4 z. E) n  V3 p; m
        if(0 == length)5 [8 N" s' m3 W
        {+ ~( `& X* b6 I# G
            // 禁用发送中断, f- T/ F; Z9 h$ \; y  a% B% z6 `
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
' A9 ^% E+ |- F# c0 ~! F        }. e4 w$ G3 w$ P1 i4 k) H# e! s
     }
' T3 p5 o. s% Q# A+ ^4 i" d我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以8 H. v5 @# C  s, z3 w6 w; ~9 x+ r
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 8 |8 j; V' Y: \; r. i7 V
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
* `& B- ^) P. j. w( [; I) |" n1、存在所有可以访问的 RAM 空间都可以6 Y& V" f- d/ T" ]
2、因为每接收一个字节就产生一次中断 ...

( `1 O" D4 b8 A; D' h# a5 ^那下次中断是怎么触发的呢?
( y8 Q: n* U7 {$ z
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
# q; w& C4 {3 t接收到下一个字节
3 ]& F0 o8 P. o* j/ o
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 c7 \4 C) i" R: c

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
- S( `% [' }/ |$ ]3 H# ?没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
4 {% B* ^3 }! [( H& F3 r ...

* t+ y( S3 M3 w手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦7 l  k  W3 g5 y) v

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
# J0 R7 q* j, B: ]' d* L( v你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
9 ]1 G/ e6 I1 Z6 K
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
- p+ d5 ^, U3 [+ e* F手动使能发送中断就会触发下一次发送

! |% y. \7 w/ q3 z- j您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43" ~) ^" v3 S9 |3 A
您好,我想问一下如何手动使能发送中断?

6 T, G0 L( G; B9 @! t" w+ q您好 不好意思回复晚了 8 i2 }8 k% M/ j" x* D1 g
应该这样就可以了
* B4 C2 ]! W! k# {" q( S! l    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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