嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问" `- v* Q1 e- G
1.。DSP解算出来的数据是存在哪里?
& q8 c* ~$ b+ ], O: B# ^1 `2.。在例程中有这段代码:
6 D3 F+ k  B$ C  q unsigned int int_id = 0;& Q0 t6 p; h' O

, W! ~8 C; G+ i3 c( ^    // 确定中断源7 g% v) A  Q0 e) V$ ~
    int_id = UARTIntStatus(SOC_UART_2_REGS);
/ l. g8 P/ c6 T
- |1 Z; b0 h5 B( ^    // 清除 UART2 系统中断( ?- [4 f( n/ n2 k3 A
    IntSystemStatusClear(SYS_INT_UARTINT2);3 Y3 O) A( V3 F  Q
$ {2 _9 N9 U- W5 i) S" y& O
    // 发送中断
7 w& {0 g. T% o- _    if(UART_INTID_TX_EMPTY == int_id)  p0 n& x/ d' i4 L- t& p
    {* w( u/ c& U: X* ~3 n, k: ~
        if(0 < length)" H% _4 Y+ a  E% `" k6 S
        {
5 [  s  e$ B6 ?1 t0 u5 |            // 写一个字节到 THR0 I+ s# N2 _& G4 y) h+ l2 C
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
, \, s3 G/ S' i9 D9 c+ {. f            length--;! O$ Q: T7 y4 m5 G8 w/ I" i" [
            count++;! ]( w% q6 [% \
        }" z1 R# I- w! ~) G7 S1 j/ H) i3 A
        if(0 == length)
+ W- A3 u; X2 q% c& p1 b0 i        {
# [) o3 i2 C6 A5 t9 V/ ^& l            // 禁用发送中断5 P! S) |! w1 u* U+ F: N8 b
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);2 [6 W8 m1 ^+ f; C# m
        }4 X. g8 Z; g- \9 y+ `
     }! r; z- A' ?/ i3 B4 t
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以( A: ?) `$ w. l
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 * a% [' |9 B% y8 L9 \
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29; O$ Q) Q- G; W. D% B
1、存在所有可以访问的 RAM 空间都可以
7 }* a, V' |) B& O2、因为每接收一个字节就产生一次中断 ...
' Q2 F7 ?9 [$ U( B2 }
那下次中断是怎么触发的呢?, R0 [4 m% t2 M. H7 Z8 O+ n$ g. d

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
8 j8 R2 @( u: a1 j3 [: D接收到下一个字节
, \7 n2 _+ J0 d# S$ m% W
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
  s3 @, D' B: R7 f5 v: o/ [+ H
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43: g1 r- l0 e( Y5 z. z, @
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?$ i: @6 _7 f8 w+ E
...
  r' v& z4 }" E
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
' N; |5 V  d' g+ Z7 Y. v
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
% h! v1 G8 q  ?2 U2 I: B6 R你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
$ ]1 A# `8 v8 b% \" ?: ~" ^
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33
1 w! }7 A- M# H3 m7 r1 u; `* j) u手动使能发送中断就会触发下一次发送

, U& \4 G( u& M2 n1 w* A+ g% Z您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
5 `1 A6 l' k& }1 ^( ]您好,我想问一下如何手动使能发送中断?
8 c$ O& p4 O! n& A$ _0 `6 f; F" ]
您好 不好意思回复晚了
$ K# w: U+ `. @! A5 u应该这样就可以了, {1 `# x$ W( `4 K2 n
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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