嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问! P) e  N7 H2 V  [5 w) s
1.。DSP解算出来的数据是存在哪里?: O; C) S+ P5 P( V& q: Q
2.。在例程中有这段代码:: P, S7 I, z- r' Z; @4 V7 W9 ^
unsigned int int_id = 0;
) x& e& b7 f9 m) s6 b9 M
2 T# Z. R* X) Z& B2 k, w* I) w    // 确定中断源" p$ P' C! h% F6 h1 n5 {
    int_id = UARTIntStatus(SOC_UART_2_REGS);
" E9 c# a6 `5 {
- E- p8 Z% m; z$ B( p$ H    // 清除 UART2 系统中断
3 m2 {! A- h5 h    IntSystemStatusClear(SYS_INT_UARTINT2);  g5 m: ?6 F6 O  y3 G5 P/ w6 h

8 I0 \4 W$ c) h, y    // 发送中断
- L$ q- w9 W8 Z3 B% O. u    if(UART_INTID_TX_EMPTY == int_id)0 a( ?6 X% G; @' [1 u4 K
    {
: U7 ?  B" c: Q" \$ w        if(0 < length)& c0 c/ n  _$ A9 d; }9 w, ]
        {+ f) M( o! K  c9 `5 F+ g9 s
            // 写一个字节到 THR
/ l& _- Q8 X* v# Z2 G            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
9 \3 s$ C: _) y8 {            length--;
  D0 ]6 g% y2 n/ q0 P9 m6 W  D! t' e            count++;; k! E/ N# N/ K
        }
5 O4 @5 f% a. v7 }- a- {6 L        if(0 == length)  n& P, w( h$ h  o' B1 v7 X
        {
/ [' Y( _: T6 u5 w            // 禁用发送中断2 Z4 x* B: f- y9 n% B' K+ A; u
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
- v, e+ h- z$ V& G" T2 h        }$ a+ G  b( I: N$ }' Y
     }$ h7 }  w7 g8 Z" T2 o% m+ ]# P
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
6 j) F1 W, s  |' P& D4 ]2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 ) ~2 d# Y* N1 w& v, P1 l0 P
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:293 g& f+ q* K. x9 P* V& J
1、存在所有可以访问的 RAM 空间都可以
" n$ ]* ]+ I( \* [: K2、因为每接收一个字节就产生一次中断 ...

3 M( Q) n8 W6 o那下次中断是怎么触发的呢?  S% q) R/ h" M) X0 \* M8 [: z* @

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
( Q7 e; J2 B; ]  ~, A: g; m4 ~) S接收到下一个字节
9 C' g* _9 w, c5 F. n% S: v
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
0 w4 E! T; I- [2 g( r
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:438 t. e3 i7 u$ z, R4 S7 A
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?3 Q. o6 H) E& b
...
; `# }/ C( ~, c! A5 \' S
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
2 x8 {9 n+ Q9 i9 \1 H/ V
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27$ o8 m8 {; g7 I/ t% H
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
7 B- F. p0 F8 K. c* _" ^
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:337 s6 u6 \* u. A: x- R' w
手动使能发送中断就会触发下一次发送

5 r0 H% M3 {4 C2 k* G! b您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43- [  v# x- P  p0 R, D
您好,我想问一下如何手动使能发送中断?
7 A( N6 M; i* g
您好 不好意思回复晚了
4 t, y4 w5 l" e0 I% k应该这样就可以了
( ]3 b9 W, X0 G+ D* q9 V2 g& a3 n& J    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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