嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问, x9 I' d4 [; p- G0 {- ~4 S
1.。DSP解算出来的数据是存在哪里?
: P* @; _( j( e2.。在例程中有这段代码:: j; D3 F. j$ N
unsigned int int_id = 0;3 T# A# ?" e3 Y4 @+ q
' _; [* \) H! B7 t
    // 确定中断源
- f' q' T1 y; E( C& I/ J    int_id = UARTIntStatus(SOC_UART_2_REGS);8 a: Z! P2 o9 F0 }
+ u1 G$ `8 K# V( [* I; `) f: d
    // 清除 UART2 系统中断
0 P3 N8 n% n7 n. w: _. x, ^) K& d    IntSystemStatusClear(SYS_INT_UARTINT2);
: s2 P* j1 G8 t& g! u# v) H
, U  s) L1 O/ L$ u* Z. \    // 发送中断
+ L& x, Q) D3 Z0 N5 i5 V4 V! F    if(UART_INTID_TX_EMPTY == int_id)
$ i  v% O+ O0 q2 `    {7 i7 o+ r) x$ S
        if(0 < length)( Q, a2 U9 T* X
        {
. g" f$ G& B4 @            // 写一个字节到 THR+ `# H8 `* D4 T% J6 v/ t
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);' f: T& B! @/ a$ A8 R! r
            length--;& M1 t, n; X8 I. \& T% a1 R2 Z& T
            count++;7 y# _6 Y, b  B4 P0 o
        }
* k: X$ M! ^, k        if(0 == length)
6 E5 i; {7 ]' c9 U  B" K8 v/ K) X        {! m8 h+ k8 Z% h
            // 禁用发送中断
  D' H( W% \; N8 U7 R6 j* B4 `            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
  i; e) Z6 T& ]: T* z$ Z1 n* N8 W( d; u        }
* ^8 p) b& j5 O- ~4 c, k+ ]; `- A4 g1 W     }
6 E- A1 v& z. P我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
4 }7 {9 A, M" {5 y2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
' {. _' T6 B- B& M4 w+ ?那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
# A& U# V" b& N- G: K" {1、存在所有可以访问的 RAM 空间都可以
" p; |, w+ Y4 _7 p8 N. J2、因为每接收一个字节就产生一次中断 ...

( n' h) X6 `1 G( a$ ~6 {1 D那下次中断是怎么触发的呢?
1 R$ d' `+ o9 G/ b' ?# f/ }- A
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
% h6 ?+ c# _3 G8 L2 _# ?: |接收到下一个字节

! Z- \3 ?* ^1 @/ X( @4 V% g没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
, z% [, k; {, y" `- b
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:435 n. B( X! ?7 V- ], V% s/ V  D0 }# c
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?  x% S' n& d) z% `
...

9 k; z, I+ X7 S' c" Q8 G手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦) u; \) j8 r+ w0 }; {3 L4 d% I

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27% D& [; |. x# p% R
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
, Y& `7 b0 I. ^
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
4 q5 r' y" E7 |手动使能发送中断就会触发下一次发送
( n. G+ w5 v* R* S+ R
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43% e8 c$ f. a  R* C6 N" s
您好,我想问一下如何手动使能发送中断?
* V' W7 C1 _: `% r5 u
您好 不好意思回复晚了
; o3 h7 r3 f6 C! A应该这样就可以了
% o( ~0 s4 x3 ~/ g' w% q    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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