嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
2 C. u' q; W* b2 G* e1.。DSP解算出来的数据是存在哪里?
# m4 B2 T- v: ~5 t1 E. H2.。在例程中有这段代码:
# \% \/ J) o% s: ?8 R, D: K" ]. V unsigned int int_id = 0;' ^2 k3 a( C5 }+ A0 T! j+ ]
' W6 O' A" {; t( N" t2 W& h. l2 I
    // 确定中断源1 P4 f( F" {; u
    int_id = UARTIntStatus(SOC_UART_2_REGS);7 t: H) L2 O$ I; z' z5 j1 c

8 D. E0 l& x: F2 {    // 清除 UART2 系统中断5 ~. x. k0 _# b6 I
    IntSystemStatusClear(SYS_INT_UARTINT2);
/ R5 g# U1 v" {
, v. E; l0 p# J' }6 N) L! M    // 发送中断% A# H0 w/ f9 M. c2 o
    if(UART_INTID_TX_EMPTY == int_id)- e2 L7 o$ n4 u0 {, V: k3 z8 X
    {9 Z0 [; C. @: o! r  B# N
        if(0 < length)
  Z$ G& v. r4 |' @2 f+ ]/ Q        {
% `6 `/ c0 x" b            // 写一个字节到 THR
. T' C$ p( U8 E: m            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
; l+ d8 M/ P3 D% j            length--;
9 V- r" g# A5 D5 t( Q" i/ I- D            count++;: m/ R6 ~: U* Z
        }3 K/ ]/ |0 X5 h6 e1 z. k
        if(0 == length)
" f) u$ _: S3 J9 I        {
+ D& b8 T0 F8 j            // 禁用发送中断: F; o$ V2 _2 g) B4 A0 K  u/ n
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);6 j: f9 i8 p) T8 N1 B
        }! }, b$ ^) O& h  s/ }
     }
/ Y4 u8 w7 @- V2 m5 P3 g我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以' A" P# A% q# ?& G* B3 L) _
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 2 n) [7 F: u) T- y# U
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
, e# x, E* }3 k* K1、存在所有可以访问的 RAM 空间都可以; m7 ]+ S, h. X2 V
2、因为每接收一个字节就产生一次中断 ...
" Z3 R# |( e! a
那下次中断是怎么触发的呢?9 P# f5 L4 K) R# h. d' W# F7 V$ n; J

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
( a4 M) g: e2 m3 L7 m" N6 v& L% p接收到下一个字节

( ^# v) ^) L: G" Z没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?2 `' E; C% s) q, G+ K) B3 x

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
/ o! y7 Z; p6 {# F% b2 ]没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?( g3 e/ ]* A& t% n
...

0 ?, t4 }* B7 p: Q手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
& N5 j. c1 k( Z9 u7 N' i7 G
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27! }) s/ L, t0 p8 c) q( C! j. M
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
0 E( ^" y: L6 V9 [4 u
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
0 g& ~. F  I* ]& z手动使能发送中断就会触发下一次发送
1 b1 }" i5 z/ i8 X9 C
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:433 T7 K  y4 v  H
您好,我想问一下如何手动使能发送中断?
( z0 O; q- n, m  h
您好 不好意思回复晚了
! [4 A. K* W  G# r& @) N' ?应该这样就可以了
( I( ~. U& s: C    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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