嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
6 ~* A$ U5 Z+ }1.。DSP解算出来的数据是存在哪里?0 ^! r* t  w: o$ P. c4 O, {+ H
2.。在例程中有这段代码:
! r6 K/ E  f* [: J8 v3 T unsigned int int_id = 0;
4 ~1 y% B1 h' F; O6 J4 r
0 w2 F5 Z# `2 c, @  F    // 确定中断源
' V  A3 h: `$ B* a7 O( @9 K  \    int_id = UARTIntStatus(SOC_UART_2_REGS);
3 Y1 z: n( S- \0 a- b
7 E& u9 c' f1 h" O- k    // 清除 UART2 系统中断
4 A* @* r: s; \2 t% C5 N% G    IntSystemStatusClear(SYS_INT_UARTINT2);: R# U. [& `" \
1 W* O+ |! l+ f  i+ \* C& J
    // 发送中断
+ u2 G* ^8 x. `( d    if(UART_INTID_TX_EMPTY == int_id)4 f* t/ E5 r) ~4 h6 i* b
    {
5 p( g) V7 r, i' w! m. B1 ~% R  \        if(0 < length)
5 J; T: h$ v& c. p+ B% k1 v" E        {9 a( V2 ~1 V0 m$ s- _* p  P
            // 写一个字节到 THR
2 m9 _% w0 O- i. L& g: s            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
6 `! c9 L/ d, D5 }9 ]- t            length--;5 ?- D; A4 M. d8 H+ ?; s( x# |
            count++;2 M. P9 m$ S: z  _$ [
        }
5 g& @7 |5 F- t" _& b        if(0 == length)
8 V, ^% V" h2 k# d' `        {( ?$ f' ]! l  d  i! ~5 i
            // 禁用发送中断
- t7 {' g: s: Q$ Y- _; A4 J$ M% A* V            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
9 Y& b, z  |5 ^* S- `. k        }  G6 B) `1 |- m) l
     }
5 o8 H/ x2 _+ n) K" }6 e( T1 [  I我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
, i1 s" L9 y* S9 y2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 & R& X: e9 C' Z3 C/ \3 T
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29- F8 z/ B, @+ A6 W# g7 A
1、存在所有可以访问的 RAM 空间都可以
7 t4 G) G4 W/ J% N1 p% v+ e( {2、因为每接收一个字节就产生一次中断 ...
' ?% A! V8 B9 I
那下次中断是怎么触发的呢?, k% s& n3 {% |) d2 T

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
8 T3 |9 U: a* J7 R, N接收到下一个字节
. {# B* }* f: H$ w
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?/ b7 ^$ F" |' ?# F

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:434 y# h1 h* p+ i4 B8 v, {. h
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
/ ^" g( x' M2 V( B) X% c: L! y ...

7 w) c( f7 u. B* M# m手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
; E8 b3 S8 C$ x" N; `2 Q- H
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27* X" D$ h/ g6 O  _& s% h
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
+ j* [7 @! ~) N! ^5 b' ?
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:335 o1 h! }) Z0 U3 K6 z
手动使能发送中断就会触发下一次发送

$ H5 P* X% J1 ]3 c$ Z0 i3 F您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
* a" I* u' v7 M/ F/ f2 A! w* e您好,我想问一下如何手动使能发送中断?
0 C- W$ d- J* K& }0 r8 A
您好 不好意思回复晚了 * Q9 p7 E# `1 e+ x) e/ m1 e
应该这样就可以了
6 I# h% r* Q% O- P    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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