嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问2 g% _7 E0 T# T6 R  ?2 a) [& g
1.。DSP解算出来的数据是存在哪里?
; E( S( F" U% Y% q  Q4 {' c7 o% H' e" G2.。在例程中有这段代码:
2 M8 _% o1 `- g* Y7 D unsigned int int_id = 0;
& u2 d) J$ g' ?, z8 h4 Q
$ H: X7 T1 ?; d9 n    // 确定中断源! w* l7 i3 C% \
    int_id = UARTIntStatus(SOC_UART_2_REGS);
; E: R. V# Y( y! l& u) Q, {
( X4 F7 Q/ d6 W+ M    // 清除 UART2 系统中断
) |- z4 D0 `* r, l1 D    IntSystemStatusClear(SYS_INT_UARTINT2);) M$ C9 N) I( F# D/ ^

' `0 h7 V8 E. [! T- ^    // 发送中断7 }5 \5 c) ~/ t+ H4 B, u) _
    if(UART_INTID_TX_EMPTY == int_id)
) I# y  Z& M+ _5 m* {0 W& \1 A% }& v    {% X  h0 d- Y: r% D
        if(0 < length)
4 F: `, [" y8 I0 V        {" `8 q  Q9 N! e( z
            // 写一个字节到 THR
6 M6 p7 L5 n9 [, V# n. Q* A            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
( n. w+ J# f8 o9 l# |5 ]6 n; b            length--;
8 o9 N: ~" T  o( A. y# {4 G$ c            count++;
" u+ A5 O  ~' o7 Y1 m        }6 f/ E2 }6 ~% m  `7 _: ^, `
        if(0 == length)/ t3 C# Q; g% M% P1 p+ ^8 d1 M0 Q
        {
/ ~) d. }9 s- z* \4 J            // 禁用发送中断
% t  i; a. j' N2 w+ d0 _! |            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);# _2 x1 G5 Z6 K
        }
, k1 t* v# d7 ?" M& z     }
+ A! ]! S* J. ]4 a- j2 [3 G* K# Y我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以! }! |/ K: e' t# Y: x7 |, Q
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
  H& y- H  t( U3 i那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
$ `5 w+ z& b7 O! X1、存在所有可以访问的 RAM 空间都可以0 O4 U, D5 g, \, M  `
2、因为每接收一个字节就产生一次中断 ...
( l$ ^9 A$ h, _8 v0 P: l
那下次中断是怎么触发的呢?
2 Y9 c1 q4 b* `! o  K0 d$ G2 F2 C
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
$ q1 o; y1 C* c% o0 W2 p接收到下一个字节

- ]6 C2 H/ }# O* K没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?- A% Z1 {# ^* ?' v6 d' k

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:430 i1 q6 Y9 p, R7 ^* B" k7 [- V6 J
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?2 S( l2 k8 Q+ r, L, o
...

/ B0 D6 c$ x0 G+ r$ d0 @0 ^手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
6 V& t4 j6 w% X1 I
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
( g, E3 J8 m; y1 Q8 @7 B5 t你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

" o3 U6 T0 C1 |9 T. p你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
  b' b2 L# t! D+ R# T3 Z手动使能发送中断就会触发下一次发送

+ B+ N* V) t* E3 b( z8 e. X您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
3 m1 m( C* V! b您好,我想问一下如何手动使能发送中断?
+ Z8 C1 T3 ]+ Z! u3 D
您好 不好意思回复晚了 ( b" L& }0 P- I  b
应该这样就可以了) ]! C, K- |0 K9 f& f5 ^
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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