嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
( n% W) y. n1 L" h# Z* s+ `) }( J8 U1.。DSP解算出来的数据是存在哪里?
/ R2 F/ T  g& j. B! G6 f5 h2.。在例程中有这段代码:
+ V% U3 v% b/ g unsigned int int_id = 0;, b* O1 V$ F7 o# D

9 D* `* z. n3 J7 x* g0 c' }) F    // 确定中断源2 E. c) o! y- [, U9 j  Q7 D( n$ W
    int_id = UARTIntStatus(SOC_UART_2_REGS);
  e+ @! {& |$ L# ?8 G# \/ ]: c- G5 k" n! [+ G% q( x$ {' S
    // 清除 UART2 系统中断
% H! Q$ y2 w) k: s# z* W  ^    IntSystemStatusClear(SYS_INT_UARTINT2);- |: P3 e' V+ N2 b$ D
2 v" |% o1 X; J! o6 g/ L
    // 发送中断" J& t. ]  c6 Q4 M- W9 ?
    if(UART_INTID_TX_EMPTY == int_id)* p6 a7 [/ [' \! E
    {
5 {+ e) o- y5 J1 d        if(0 < length)
' c6 J* G6 t$ _# Q: `- s        {
+ \; n! \5 f; V( I# `            // 写一个字节到 THR- I& |+ p2 P, l& E
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
, \1 a- L8 B2 }6 }5 D            length--;
2 L& t5 |* d  z( f9 h# M. q            count++;
. Q6 t4 F" E6 _  o        }" c! N% E. S! ]6 f3 X' n8 v
        if(0 == length)& k7 v: Y3 v+ W
        {
5 ]; b3 L8 R! o% d# j- L, ~( ^            // 禁用发送中断$ }. Y7 L& L- ~* l6 |1 v  m
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
; L# O. j, [( {0 F( S. R        }8 B' y. }+ a/ u8 X
     }
; c' u9 t: l6 x& _3 c8 q我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以  a$ H4 z. ?. Q
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
2 W4 z* d8 K, m2 I+ m) Y( h+ X那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
$ ^+ H- V( j# ^% f/ k# k3 Q- P1、存在所有可以访问的 RAM 空间都可以
  ]+ p1 t" w7 u0 D$ m2、因为每接收一个字节就产生一次中断 ...

; S( n! O- _7 |! B# j/ S那下次中断是怎么触发的呢?: g% Z# y& N7 E4 ^

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
9 y1 ?  b) W' E% f3 [' g# ], d接收到下一个字节
: E* L6 S& c2 M3 w8 F: K) C; j
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
5 g2 s1 W1 o) j; U4 i7 I
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43+ O. _, r0 ^" u. r/ h6 z! L8 n
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?+ C4 e9 r9 f+ ]$ M
...

2 j* V2 N9 l7 T2 j' D手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
4 O# \$ [/ ]2 |% ~5 V) o
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
; g2 F2 s4 `0 O7 M你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

$ U# H9 o; _* @- V. Q你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33) e. x, t% O/ l* A
手动使能发送中断就会触发下一次发送

* _* U5 u2 S$ j/ ~0 w8 U您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:432 ?4 r2 _( F4 V* n6 w
您好,我想问一下如何手动使能发送中断?
' J' r( Q4 s3 {- {* W& R
您好 不好意思回复晚了 5 X' j& x7 J: X9 p$ |+ z& q
应该这样就可以了
9 q4 E5 W( {  f. t    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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