嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
, d0 z( }) v7 P& [- c1.。DSP解算出来的数据是存在哪里?: Y" z: k* m" H) w
2.。在例程中有这段代码:
3 t+ s% C* a1 C: R. v unsigned int int_id = 0;5 L0 }# z- `2 ~/ c
5 H; c4 M2 e9 c, }. ]3 R/ T9 t/ f
    // 确定中断源
- ]. e$ P3 {/ P: u" `    int_id = UARTIntStatus(SOC_UART_2_REGS);" V! }( F5 B" n
5 d# H) x! c, h8 o
    // 清除 UART2 系统中断
1 W1 Y; I6 U+ e% g$ |6 I/ o    IntSystemStatusClear(SYS_INT_UARTINT2);
. a. X: p& W% s* N0 |4 Q; x7 o) m9 i; f" G: b$ n- _
    // 发送中断
3 O8 {2 t; Y$ G' i2 p2 b* y/ A    if(UART_INTID_TX_EMPTY == int_id)' m6 ^( m, W! @4 o$ d5 b% c
    {
+ G! i: s$ O7 S' E2 B        if(0 < length)
, O2 ?0 v$ B7 [, F: C- A1 Z        {
1 L- b, ?: E0 Z. e            // 写一个字节到 THR  P) u( b, }7 a. t
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);" H/ {* `( |4 V8 ^
            length--;% A: ~. }2 t' e" s$ T  @1 B  y
            count++;
- Z' M- M4 F5 f3 v        }! L* l' q: t: m/ o) k+ [
        if(0 == length)
5 K1 G" q) P! N& L+ v/ n        {/ \+ E. {4 u0 i- M0 O) n4 M
            // 禁用发送中断
5 V, L4 Z4 t/ X2 v  f$ f            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);4 O/ ^! F. {: N4 d/ O) H+ Y3 X1 k
        }
, {9 c0 g8 i- U5 i- q     }
/ X- y& F# a# I  j2 U' M* V我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
" Y  O8 E$ m. C; @0 W) n2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
3 ~, ]1 x& I* z  i+ z$ F1 j9 A那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
- X% u1 F; b" X0 H7 v1、存在所有可以访问的 RAM 空间都可以
9 D- C! f( T8 c/ G$ @" |; }' H' M% q2、因为每接收一个字节就产生一次中断 ...

. Y7 s$ y, m% m: g9 U: w那下次中断是怎么触发的呢?
- J% ~+ ~# M2 N  ?1 t; W* B1 C
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
3 d. d4 y5 ^; g$ Q$ ~! d接收到下一个字节
$ R0 \: a5 W) R/ l$ J
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?2 H. a* S% g' z. {, s: A

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43, E" t/ ^% J" t- Y0 Z
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?7 Z( v0 I# R+ ^& g) _* E
...
  d) U9 ^: M+ f! E5 W& O5 `/ P
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦: A% Z2 p$ |* D# j% |; |

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:278 C' {% u* S! d9 _4 x" h
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

, C8 L* S! ]( p" L4 a; u6 S% V+ y你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33+ k: h( G) T: k, C* |( D
手动使能发送中断就会触发下一次发送
  H* F( R* I1 g
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43$ h& D0 V8 [0 D
您好,我想问一下如何手动使能发送中断?

: U6 D& T1 `9 s5 N* O  j您好 不好意思回复晚了
9 X& l: q% t7 g3 q# o/ e应该这样就可以了0 q, o3 j. q2 g( k6 n1 k! i. {
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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