嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
1 T5 G& }* q% p1.。DSP解算出来的数据是存在哪里?* H& V. ^4 z4 U+ R* f8 j
2.。在例程中有这段代码:1 E; M$ `( ^4 I0 D% ?; [
unsigned int int_id = 0;' h6 k5 F1 z! t' g/ C$ x, ?

9 J! y1 @; u: \" D% k    // 确定中断源; @9 E# r8 x" p3 U  c. D" M
    int_id = UARTIntStatus(SOC_UART_2_REGS);
4 O$ u* `- _  }6 A" k
. {0 G; E8 O# O) l# E4 K0 e" i2 K1 R. b    // 清除 UART2 系统中断1 \% j2 A+ s- X& n
    IntSystemStatusClear(SYS_INT_UARTINT2);- }/ Z3 l& T' R6 d

, }' R1 P) f$ b" I: y" ]0 b    // 发送中断
8 V  a9 v; ~) L    if(UART_INTID_TX_EMPTY == int_id)
; _+ m, C9 h+ X6 h    {
3 q0 K. i; G  L& u. M/ s. [4 R        if(0 < length)  G( B' H- [6 C" W: I
        {5 h( x& {0 j% z
            // 写一个字节到 THR2 E0 Y+ y: Q2 l" _: r8 }* c
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);( j& Y8 U. S- K) k: I8 i6 _
            length--;# }  l/ W3 n4 |
            count++;3 J2 B% d6 \' V
        }: N. E8 m; I  e+ c4 y" P$ j
        if(0 == length)4 s) t) K2 M* V/ e
        {* v* E* p( }: T& D5 X: z( |
            // 禁用发送中断
% [' s- w* x# Q4 K            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);8 I" R+ v) X4 H3 m6 T. ]( z+ n
        }
! J4 F& v9 c6 o7 i     }
2 E  x( n' n$ _8 X6 r我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
" L* a3 N1 k# \) R) z+ s2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 ! A, ]* g' I  F8 a9 A. J6 T/ o& H
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
1 Q, H# X$ ~8 Z" y; a" ~& ?1、存在所有可以访问的 RAM 空间都可以+ }) ]+ K3 z7 O: e" p
2、因为每接收一个字节就产生一次中断 ...
6 E9 ^4 P! X+ P8 e+ }0 w; p0 L
那下次中断是怎么触发的呢?8 N1 r7 o) l/ o' F/ l, ~, ]0 [

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:437 w# L+ @4 v9 u# ?! b, p
接收到下一个字节

5 @8 l$ W+ b$ \$ ~没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 [6 X' f; u: T% O/ K

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
8 R1 A, C& }  x+ _; X没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?# z) i7 J; J5 |4 t: v& @
...

) J* a9 Y4 @" e' X4 j0 k) h, @手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦  b9 n1 _- R% ]5 H! P: t9 r

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27$ Y; j3 ]* ]* z% V
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
3 c" J! f9 P: \. |" r
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
4 Y9 _1 J/ J& j- a/ a手动使能发送中断就会触发下一次发送

' i  A" g, U: Y0 c+ Q您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43! S: [6 B; [7 o2 X' j4 u' [
您好,我想问一下如何手动使能发送中断?
* I" v; @! {& f& P5 |7 X- ]. h; }3 P) v
您好 不好意思回复晚了 . E% [6 A* {) x. r+ l2 w  W) S; q
应该这样就可以了
, j& V% U4 o$ D  A/ d    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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