嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问% X. `2 Y7 m! s. _
1.。DSP解算出来的数据是存在哪里?
$ H) k$ e8 Z1 G' Z9 q1 ^2.。在例程中有这段代码:6 Q. q8 ^9 }: l
unsigned int int_id = 0;4 W; T- k) S. n& A

; `& ?0 y9 P3 X" o    // 确定中断源
) k8 }! g! A9 v# F% o    int_id = UARTIntStatus(SOC_UART_2_REGS);
; m: D8 H7 j2 D* k- _
9 t( l; j4 ]: ?6 J    // 清除 UART2 系统中断
; B& u( H- V8 l1 }/ r. P7 _    IntSystemStatusClear(SYS_INT_UARTINT2);
$ ~# ~( m: F  i; x) f. S
0 T  s) K) N8 S7 r) ?! f: `    // 发送中断
9 B" g" h0 B* C6 u" B1 r( b; V1 |    if(UART_INTID_TX_EMPTY == int_id)7 `/ Z. q7 S+ ]# i& k3 Z
    {
% k; T! ?9 u4 A        if(0 < length)
0 L. H# ]3 B' B5 s# a        {+ W9 w. U6 n6 i' ?2 x5 Q
            // 写一个字节到 THR3 b+ a! E$ E- f6 S9 n
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
; ~% v  [+ p  c# u9 N            length--;
& K/ U2 @: \2 V( V5 z            count++;
3 J( i5 P3 j5 S$ z4 t* M9 _/ r        }
) Q6 _2 E$ [- `9 A, s' `1 s        if(0 == length)
# v# C) {- ~' d6 I3 {        {
$ X0 G! N& H, g; @. Y1 G            // 禁用发送中断
2 s! {) A) R/ J1 z$ N6 B  T            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
0 f5 D3 P  s, Y        }
& x1 J! z2 C# i0 _) K4 s     }
1 w' ~* B* H7 p& ^我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
3 a" W& R8 K0 P0 ]' ~: ~  g2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 ) S3 H* G$ o( M' I+ l
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
/ S/ ?) F1 @7 B: C: A1、存在所有可以访问的 RAM 空间都可以1 l$ r) i) V* [
2、因为每接收一个字节就产生一次中断 ...
% ^/ `. h3 \% @  h% r' }" K
那下次中断是怎么触发的呢?
# b9 {' T! U  l1 _/ ]
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
! i  g. l7 X! _: T# A4 c接收到下一个字节
) O) z/ S2 ?4 w  h- N3 D- U: N8 ]! d
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?4 Q: o+ t- ^! I/ o3 U2 A

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
, O. E, E$ O/ m2 ]3 h5 c/ _% \没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?$ U# K7 ^# X* v! K0 r7 q9 s% S
...

$ q4 a; I/ e) Y; Z6 D( g手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
$ u! T* z& R2 [) D
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:273 A3 J$ f0 r6 H) e9 r- ]
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

4 }' u0 y+ q8 `$ \4 y你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
/ x, @0 K0 T& j- n1 ]. g1 M+ c手动使能发送中断就会触发下一次发送
3 d0 j8 G% g8 D) N! a- H2 W
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
& D$ C+ E9 y2 D: [" L您好,我想问一下如何手动使能发送中断?
9 ~# W2 s# T% ^/ X) E
您好 不好意思回复晚了
! t/ ]& a* I  j" S: J应该这样就可以了
4 ]6 D' }: J  h" V9 }5 Q% O    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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