嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
0 h1 Z  O% j- F1 |5 f2 [+ K% P1.。DSP解算出来的数据是存在哪里?" Y1 f; v8 y$ x
2.。在例程中有这段代码:
* U8 n% {6 L* c; _: K8 ] unsigned int int_id = 0;# y3 j* \9 u: p; w
8 i% b! G' H0 g& q" {
    // 确定中断源
$ u+ N' s8 a$ y3 Z  ?    int_id = UARTIntStatus(SOC_UART_2_REGS);
! G# r) t) g" i. n) p2 a
0 c6 e, I; c* H* S' c) U! w8 z5 ]    // 清除 UART2 系统中断. J* C# d$ \- a/ O' h
    IntSystemStatusClear(SYS_INT_UARTINT2);
6 s& j# z6 v4 T9 q/ v$ ?- F: c* k0 z6 g0 T, e6 z  a
    // 发送中断! @$ f" B" [# O0 u. @( ^
    if(UART_INTID_TX_EMPTY == int_id)
) f' C' Z: p1 e+ `, R. Z    {
9 [" w+ P% g5 s- n        if(0 < length). C1 Z1 `) L1 m& ]# S' U8 ^
        {
/ e8 z, a8 W% v' F5 h, ^            // 写一个字节到 THR1 Z3 m. K4 w) |6 M7 H6 Z  N
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);( C  `& \  E: Z% t6 [3 V) T  `
            length--;
6 M8 f6 D/ }' w# T            count++;4 J/ b, C% v2 w) T# \& V5 M# m; d
        }$ q# o7 b( T7 z1 u. m* y6 C" [* R
        if(0 == length)
% s8 w' K' t5 c* P, H        {
, S) y- I/ u8 b            // 禁用发送中断% z6 u' E% K$ ]$ p7 z0 v( C
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);. a, K9 Z& @) V2 w3 b
        }
3 [, b, |' o5 M3 d6 I     }3 M$ S( o4 L! q  P7 @7 c8 |5 F
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
5 d  T  Z, _( c8 P# N( G+ W, s2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 & M# M% V  o7 X, }. E
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29( o& G9 D7 L0 }
1、存在所有可以访问的 RAM 空间都可以
: ~) @8 A: \- J+ Q  `( P2、因为每接收一个字节就产生一次中断 ...

; p3 z0 Q$ q! D9 z" z那下次中断是怎么触发的呢?9 ]& w* k% P0 ], h' V; q0 B& {

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
8 |5 r8 @- g; m/ S* {接收到下一个字节

/ Q$ j! b* G4 b! k0 F4 I4 D没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
8 R) `+ O) w1 x8 n: J- ?8 l
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43+ m; B3 ]9 u3 k7 o  N8 _
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?* ~6 P' d6 S. c
...
9 b3 R) C# f' t( d& {# ?
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
/ M, ]8 L% `' g  z
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
6 G" B% n) I8 M0 h你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
; n7 i9 n2 B2 K5 `8 i
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
- Q$ q) A6 j1 Y/ O% C+ r手动使能发送中断就会触发下一次发送

1 h/ w  X' Z0 v1 c! h您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
. m8 g  w. R$ v) J您好,我想问一下如何手动使能发送中断?

- y! d# P9 C; S' d6 }您好 不好意思回复晚了
5 U4 ?' P7 R, k& \# U$ Y应该这样就可以了2 G" j5 U' Z% X; i
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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