嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
) D/ F, R, d! [. h* P1 A' D1.。DSP解算出来的数据是存在哪里?8 f( O- c1 z9 x( J7 ?
2.。在例程中有这段代码:
; }( {/ J- D1 N) v# H4 g unsigned int int_id = 0;6 E4 k, D: l% @7 B# i

. Y7 d0 [2 Y: J7 t    // 确定中断源
; i, w. n; |% V$ }    int_id = UARTIntStatus(SOC_UART_2_REGS);
3 K1 Z5 B4 m* T5 a5 v; d, K+ y+ D2 v, P$ m: m9 r& \/ }
    // 清除 UART2 系统中断
- ~/ k8 i1 o( |$ N! g: m, f    IntSystemStatusClear(SYS_INT_UARTINT2);( S% Z& P0 z5 h& O! s5 T
; j+ v& d4 q8 Q+ |; ]4 c2 `# d
    // 发送中断
$ p' Z. O- l0 o2 x9 a# `3 b: W    if(UART_INTID_TX_EMPTY == int_id)1 s# N& R, b4 ?& o+ O# t: R/ k) Z
    {
! G( ^' ]7 g6 B2 Z        if(0 < length)
6 r( k& M- I- x3 O# _3 Y        {
* \% i  w2 w7 @            // 写一个字节到 THR+ E4 I% S* _/ f- b0 n
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);! y2 x7 h1 z% E6 K7 E
            length--;2 x/ Y! x  C) @  Y% p
            count++;7 @6 M5 `" c: C8 b
        }" m/ m: B& [0 j8 G% a# p/ o
        if(0 == length)
' t8 q. H! B  z6 F        {
7 A' w# R! H- ?9 B( h, p" R) j3 `+ w: E, g            // 禁用发送中断
# N2 H  R/ j8 G- N1 [            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);5 m5 `5 M; t/ n& {  t+ A
        }
! d4 ~, N: ]! f- s2 ~) `$ ^     }+ S! L2 F/ G/ E  h# I+ M
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以1 n: u5 V/ h, x2 m: p4 o* f1 I0 \
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
! D& E; [  ~# _# a4 C4 v3 Z那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
( _* U% b  _+ T8 p1、存在所有可以访问的 RAM 空间都可以# ]' c  v& r( ~
2、因为每接收一个字节就产生一次中断 ...
. w6 J, p) }2 s2 f2 S
那下次中断是怎么触发的呢?
' h2 K( y4 m9 F& O
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
/ O" B8 n& a1 ^接收到下一个字节

! W  C/ r% ]8 [5 M没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?+ g! _+ D1 |8 t9 {5 t, F$ h1 P

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43. k. s, S# w: R. ?' }2 o
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
: \& ?& K, B" w/ O7 \ ...
" X. H3 `! q: ]
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦0 e8 r5 B  L$ o) b  R, ~

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
' |7 N# I/ N; w' I/ t( x你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

4 G0 [& ^& M+ L6 {; d% Y你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:330 T! ]4 i+ [$ b
手动使能发送中断就会触发下一次发送
# E+ D' ]% K% _4 w" j- c0 L2 Y
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43" X* L  X) ?  U! I. x5 A8 Q% h* d; Q
您好,我想问一下如何手动使能发送中断?

# b2 a" ^! o0 g5 ?' U您好 不好意思回复晚了
9 D. w* P8 Q+ _% U' h应该这样就可以了- `# [" W" ^& A
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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