嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
. F' [5 r& o+ f4 H1.。DSP解算出来的数据是存在哪里?
8 S2 I$ X( X; z# B4 A# k2.。在例程中有这段代码:) g0 d  ]& v$ K2 F& ~+ f1 [. {
unsigned int int_id = 0;! I* o2 @9 l- @. I! J" }6 N
# ~" d; u3 M" M: L
    // 确定中断源* V: M0 e) y3 p( x, m7 ^0 J
    int_id = UARTIntStatus(SOC_UART_2_REGS);* e% m; S/ ^: t4 Z- N8 g+ @2 r
7 `! |+ c) x4 e# G) a
    // 清除 UART2 系统中断+ e7 |) R$ f  j# d, N& n
    IntSystemStatusClear(SYS_INT_UARTINT2);
4 J4 _  j" N9 t6 K3 Y% t" @0 Z( P1 K; ^; d- Z( N
    // 发送中断
0 L- R, E" _/ ?" C& i9 x    if(UART_INTID_TX_EMPTY == int_id)
8 O) B# ^; D& Z    {
' y# }! }" i$ }, E9 v        if(0 < length)
; N% S% N" Y0 |        {
2 m3 v/ @' U$ P% ]( W8 M3 W5 Q            // 写一个字节到 THR+ d+ B; w& `$ F+ `: B2 ~" d+ R
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);8 ?# \/ C$ G: a! l
            length--;. Z: X' C% h1 r' l# i& v% o
            count++;
, t- q1 M5 L3 z; Z& N7 a: l5 J0 U/ I        }
; a! l2 }* Q4 R+ \7 P        if(0 == length)/ A7 l5 ?5 Y8 z) R4 T4 f
        {  P1 [' z8 O  d: k# c0 l
            // 禁用发送中断
9 {# o! v9 Z8 ~            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);. }+ _8 H' y" C6 Q1 m
        }' a% H: m- P9 n' ]7 q# J
     }
( a3 O" z/ ]2 x# j% d+ p我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以9 K" X' T/ s6 T; ?4 h
2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
6 J3 w0 }; A9 H1 w( V那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29* Q- i$ g6 t7 m' [  U3 R/ g( r
1、存在所有可以访问的 RAM 空间都可以
7 p' I. q7 K) _7 {2、因为每接收一个字节就产生一次中断 ...
' I8 B4 K( r$ [
那下次中断是怎么触发的呢?6 B+ X9 m- E3 W+ t, K

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
0 e/ I, l/ R% O7 S6 }4 t$ Q接收到下一个字节
. w9 S$ u: Q. a
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
1 M6 C+ u  \( M4 R/ \7 R3 Q
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:430 ?" J+ O* ?" @% a* E" W# x
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?# g$ ~$ K) V1 W
...

0 V, {5 S/ r8 V; }: x手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
$ c9 @0 `6 j9 o
作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27. P* h  ?5 p8 C
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

" a: F3 i, C1 ~5 C/ W5 C& a你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33' C! u% K7 p& d  d  b
手动使能发送中断就会触发下一次发送

2 a' U* }  b* d8 B( D您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43  `- x* n* ]$ Q& C7 V' X
您好,我想问一下如何手动使能发送中断?
4 C$ p% D5 I; e+ I1 t: n, ~. I
您好 不好意思回复晚了
. }" x6 u3 s2 I应该这样就可以了, B0 i4 c7 W- u* d! a
    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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