嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问. ~: B* |6 L$ w4 F2 `
1.。DSP解算出来的数据是存在哪里?# j3 P% w& ]/ a  O, H
2.。在例程中有这段代码:4 Q; q, V4 f) V; @1 p- ?) F
unsigned int int_id = 0;3 L5 U+ |& Z" K# V' [% X# ]9 o
2 J- n/ k/ Y, T1 m  D7 D) t- |: @
    // 确定中断源: q' N8 q# w1 e( G/ W
    int_id = UARTIntStatus(SOC_UART_2_REGS);1 y. i/ n; N4 ?; m' O; ~

" O- W" Q% G) |9 b* L, N    // 清除 UART2 系统中断
+ h- x; h" x5 A9 m* v' x    IntSystemStatusClear(SYS_INT_UARTINT2);
- n9 r; _  L  u& b8 q& ]% w. p2 b3 j9 F
    // 发送中断2 C$ i6 P# K' X1 x1 O- b
    if(UART_INTID_TX_EMPTY == int_id)
1 @. g$ C! G+ r& M8 C    {) G6 v7 [" i' `: X' ]5 h- t
        if(0 < length)3 c8 W8 w1 M& ?
        {
. j' X" V& w' V" I" j+ A0 U! K            // 写一个字节到 THR* P. r6 G+ k; z  v& I
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);, j1 w# t  `) I4 C1 L) x3 D
            length--;
- {4 N' e) D$ L4 R& W& v: L            count++;4 s) Q% j) y1 p, D2 N7 |
        }. F2 p7 V2 p5 e
        if(0 == length). e) S. Y; {4 t# Y7 b7 N
        {2 h3 |" c: o! `8 C8 D- O
            // 禁用发送中断
" H, X+ Z1 w9 t! p            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
( b' `- {8 Z3 n9 w7 c! D" V        }
# ~2 I8 b$ k2 P* O1 p6 o9 i     }
( a: V. `; c" S. _8 I我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以: O/ F+ |/ p/ x* v5 b+ q* {. d
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
7 L; a  j/ S* k$ o那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
( f2 U' l! Z4 |: q+ ]8 e1、存在所有可以访问的 RAM 空间都可以+ i' {; m% a9 O6 Y5 |6 E
2、因为每接收一个字节就产生一次中断 ...

& s* V7 }% ^# o& I那下次中断是怎么触发的呢?
: S  g( F1 d6 E( u' B+ [
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
) C& m7 j# ~2 \9 _9 m% P% Z接收到下一个字节
3 a# i( x! G% M; z# y
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
1 ?% ~6 m1 p! V% t
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
, R5 z! u- u" E% x! ]: @* E没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
6 j' Z- S' t6 G& o8 C ...

% _1 j$ h# g# d9 J) o; ^$ I手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦* o! {6 @' [* M% F" ?* ~

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
( p/ X8 P* N: r3 B- P你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

- f9 v" H. X4 P! h$ F你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
3 J3 M3 A, ?+ |& k# N手动使能发送中断就会触发下一次发送
' v) b: U, q) ^5 e& R2 E/ V
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43+ y! B  X0 }9 L
您好,我想问一下如何手动使能发送中断?
- C; q3 _9 s3 L1 W# O
您好 不好意思回复晚了 & o# m  [$ s4 [$ k! x6 Y! ?
应该这样就可以了
+ L) _$ \7 n" @- S4 R    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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