嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
  M9 Y% t5 A9 |6 i: I1.。DSP解算出来的数据是存在哪里?
8 B# }: P6 o* D* H5 K9 D! h, C1 K' `4 S2.。在例程中有这段代码:4 v# p$ e. k, [. c" B* Q. e
unsigned int int_id = 0;4 M) o+ T1 W& z5 \

$ A" x0 m" V" i1 u" t: Q    // 确定中断源
( l: w" H# B5 h    int_id = UARTIntStatus(SOC_UART_2_REGS);" S7 t, P4 u! T
% s* ?! x+ T0 v1 Z
    // 清除 UART2 系统中断0 L7 c5 Y7 h# n4 d6 v7 {* T8 C% L
    IntSystemStatusClear(SYS_INT_UARTINT2);! B& r/ [- r0 B7 X* }9 q
$ b6 L" y& G( w* L
    // 发送中断; e1 y# U, p4 P+ Z( e
    if(UART_INTID_TX_EMPTY == int_id)% L: h& X" y( m$ T6 q5 \" W, O# P% N
    {" k) @# m) r/ L
        if(0 < length)
. y, n& I5 ^5 ^( y' z        {
- d( j' H* V4 y, E- a- j" O3 e( L) b            // 写一个字节到 THR
( _. l, [' Z3 I1 {; |7 z            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
5 U% F9 E2 n2 m& t            length--;
5 G+ R! c+ H3 h# Z8 X            count++;" W* N* Y: [2 A# z
        }
; w6 p) z0 I. ?% |" k        if(0 == length)6 ]; ?4 K! A5 l9 \8 d: C! a* }
        {5 E1 X' j+ ^  K& S/ N
            // 禁用发送中断
- h, O/ c& b' [            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);! P" y8 N3 q2 o! B% d
        }8 U, V" `* h4 T7 `) ]) f
     }5 n. Y  U0 \6 l7 l- T/ ~  h* ]
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以" g% f# y# e' A
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 . N1 N2 E5 @+ S# h5 }
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:295 E( \  N' l. e. s; F& ]
1、存在所有可以访问的 RAM 空间都可以
$ h3 B# R- y7 z: f4 j* T2、因为每接收一个字节就产生一次中断 ...
: z% A7 {3 D3 V
那下次中断是怎么触发的呢?' A0 w3 r% ]% V0 b& E  `

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:431 m" `; m# g1 K4 {. b. ^; m( I
接收到下一个字节
6 b  B4 W$ s5 B& l4 w* }
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
" i" T4 [& }& c6 \+ t/ r
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:437 N0 u9 t  d! y" o8 ?! I  b9 B2 q
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
* l# E% z# X! [ ...
4 x( U6 C6 o. L
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦; @4 v1 h" G$ |# Z( f7 R# a

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
$ Q" |# ]! L* k9 s你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

3 k1 ], H3 Y$ |  M7 N" }你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
1 b  S" _/ ?$ A8 }* ~# n5 Z! P+ D手动使能发送中断就会触发下一次发送
, q* R* N2 B  d" A- g7 r
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
% C& U; y4 h5 B) s; d* m您好,我想问一下如何手动使能发送中断?

2 v( g$ e/ x' E' d9 w# z' s- ^您好 不好意思回复晚了
6 a4 r% f( M0 r( g1 I: C应该这样就可以了
1 ~3 [9 g4 e9 ?% H    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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