嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问" f. o2 Z; G2 h) t% P
1.。DSP解算出来的数据是存在哪里?1 T. R5 n7 w& I3 M. T& B3 Y4 v5 a
2.。在例程中有这段代码:
% b: a$ s$ U: v unsigned int int_id = 0;5 Y& ?; s2 z+ a/ h
5 j( h' o! s( V0 c4 y
    // 确定中断源" d" p' [+ n  Y& K7 A
    int_id = UARTIntStatus(SOC_UART_2_REGS);
, y5 o9 I4 c# C0 Y# j5 I& l+ j7 h: @. p0 c- }" M6 G6 Z, W+ s$ y
    // 清除 UART2 系统中断
$ O5 W" |/ [- A. z1 ~    IntSystemStatusClear(SYS_INT_UARTINT2);7 c& H1 |) z" Q" t

; P3 S# Y. f$ L& I    // 发送中断
  u! p% ]# o4 N( O$ S& [* a    if(UART_INTID_TX_EMPTY == int_id)( d; V* X% b3 K7 I" b9 O: s
    {
! A0 _! M0 ^5 T        if(0 < length)
* A: Q* y, s' q% c        {
6 ^) L/ f9 L- {1 M            // 写一个字节到 THR! Y: K2 a. M* `
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);0 d0 d8 N1 Y; ]5 r
            length--;3 k0 _2 l) u: r7 m. ~) w  @
            count++;
/ V  o7 J; q- }5 ]        }; f, h0 w1 w6 _1 W
        if(0 == length)7 H5 g# {* l3 h6 H- g, |
        {
" P* B4 |! d  w, w  E- v            // 禁用发送中断1 H4 R1 [7 D% }. t  ^
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);. ~0 j5 E0 Y" k8 V- z
        }
2 I( n2 O3 G. M! Z5 f     }
! r6 F7 M; C* m% U+ c! n我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
8 p& X8 z3 @: G! I" r4 _3 o, L2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
- N; S% ~4 q) L9 U% G那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:291 G- z6 \; C( K" j
1、存在所有可以访问的 RAM 空间都可以
! \" M) s( L4 w( E. S7 q0 m2、因为每接收一个字节就产生一次中断 ...
3 k9 X/ I6 O2 J. z$ X- z* ~: o) H
那下次中断是怎么触发的呢?
, s1 c# ?: X/ c3 y
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
: {9 S6 K; l2 p接收到下一个字节

8 O- g7 S5 Z% j4 o/ a7 a/ O没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?$ w0 N0 v# \# I9 `) a8 T* O

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
$ s" [; x1 E' W, ~; E没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
+ |& O0 J' q* \1 N ...
4 c3 t- u+ C1 ^7 L5 V) y3 u
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦9 X6 [. z4 j% t/ V3 o

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27, D1 H$ l( o5 p% n  P, U$ I( A
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
9 s( i8 t# C0 e9 X( v1 |6 L
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33# ~% ?& w- O# K
手动使能发送中断就会触发下一次发送
0 [" a" B1 V4 v' z# X& J4 Z& l
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
: n  r) {: H# P您好,我想问一下如何手动使能发送中断?
5 h; p( @7 C2 s% e- F7 h9 r! k
您好 不好意思回复晚了
+ g' W) x* F) ~; C8 \应该这样就可以了
4 e3 d8 h2 q( q" h9 ^' b( ^    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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