嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
- L) s& a. u9 O1.。DSP解算出来的数据是存在哪里?
# p' v1 K3 V8 w0 Y3 m" [* y2.。在例程中有这段代码:" l0 X% x: L1 @: J; B
unsigned int int_id = 0;- k" d: y) ^7 a, f
, ?: B, f" O( H  \* T& A# N
    // 确定中断源8 f4 Q' }' ^9 U) F, f8 a& G3 Y3 o$ d
    int_id = UARTIntStatus(SOC_UART_2_REGS);8 d9 G/ z5 I, h# i) O

6 R: y( l* i5 }' V3 t6 z    // 清除 UART2 系统中断+ m1 ~4 Z8 @& B0 K. c9 x
    IntSystemStatusClear(SYS_INT_UARTINT2);1 h6 ~' F8 k# Q) w

9 R" d. c9 Z9 t    // 发送中断
8 c: s. Q, Y- H5 A5 Z' [    if(UART_INTID_TX_EMPTY == int_id)9 l1 [; I+ P7 y% ]3 f+ F
    {" i2 Z: g8 M! k: I1 m
        if(0 < length)
' |  p5 X; H7 `        {7 m! o% J6 p4 {) d3 C0 [1 w) @: S3 o
            // 写一个字节到 THR) l/ g0 F! B: {/ S  l; Y0 }
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
- x  I. A' X' T            length--;
! O# c5 C/ ~* G) L            count++;& I. e& P# P' s
        }& w. b' q# V: r% \& |
        if(0 == length)
: k5 u, \3 B6 v/ v        {
) u8 ~, k) y1 N  i5 j! j            // 禁用发送中断
. b. k4 f" K7 F: q: k# c6 d            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);3 ]5 i" W* m) d& j% M( w5 N
        }! C, O1 j1 I8 x: E
     }- ^& N9 W4 `+ K& R( J
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以) I5 x/ `5 c! E. ~# o( [2 q# T
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
3 [9 ^# N0 }& a2 f那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29* S3 s# {1 I4 D/ z6 ~' G
1、存在所有可以访问的 RAM 空间都可以+ x% @" H' V. h: }% f/ W0 ~0 W
2、因为每接收一个字节就产生一次中断 ...
+ K# o2 i5 T4 G0 ^3 c  Z- M
那下次中断是怎么触发的呢?
1 k3 L4 v( x5 i- h& a' L
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
$ q& f& K, \, u% G接收到下一个字节
, v8 l. s4 s* B9 h" s; c
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
0 ^% p% e; L6 A% c7 r
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
5 o9 ]6 }* a6 i# c; @  L1 F没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?2 q* C' f$ B' d& V
...

1 f- J- L/ F8 d: u  C" Z6 z手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
# p8 o: [1 e9 g
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
( M9 I/ X& b4 c1 c你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

7 u7 k# j% ^" d6 p9 B6 A+ F你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
; L/ o7 x8 h9 Y) ?" U) e' Y手动使能发送中断就会触发下一次发送

, K' l; F/ U( O0 M5 R! A您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: T; r& Q9 @$ }, M您好,我想问一下如何手动使能发送中断?
1 T7 r0 L7 S$ G
您好 不好意思回复晚了 8 T& c; t; k* v) Y& M
应该这样就可以了8 F7 f* Y. H, s- V+ C8 s) M
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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