嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问3 q. {  ^! H% \
1.。DSP解算出来的数据是存在哪里?7 |- w: l. i3 _
2.。在例程中有这段代码:
  u( ]9 s! g: w" o unsigned int int_id = 0;# p+ u& _; T- o8 M. d
: N, S% H* b/ D+ C' |4 ?% ?
    // 确定中断源0 N* I1 V; s8 J3 n
    int_id = UARTIntStatus(SOC_UART_2_REGS);
9 u1 G: x3 d, ?: K6 K) {" _9 i1 P; ]# p& J' `* L
    // 清除 UART2 系统中断. a+ o0 P# V! ]- f
    IntSystemStatusClear(SYS_INT_UARTINT2);4 n9 ^+ |( `5 U# ]6 G" t  u
- z& H3 M! ^% Q- k9 {3 r
    // 发送中断
7 |% `- O& X5 [. {3 y& B  C7 H    if(UART_INTID_TX_EMPTY == int_id)
2 c* I# N9 s1 i# U2 {8 _" N    {
2 U$ \2 ~: y4 s8 z" G. `  B+ F9 x        if(0 < length), r- e* N4 J" d1 D/ ^3 O, {
        {' k) `5 k# q  `7 O3 B% [
            // 写一个字节到 THR
: t/ W- f! R% l6 K0 b$ P- r/ ]            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
! T) e4 n; C4 R( k( n7 R            length--;6 x$ M* G! Z. \0 d2 M$ L0 @; P$ A
            count++;4 @$ O) m' ^* H' @, T1 }6 e
        }- T! |( D# k" N) x8 e
        if(0 == length)
4 A* m2 g- _1 L: P7 t        {- O- K) `: }. ]% A1 G
            // 禁用发送中断2 W7 W0 B- O' i2 M- D
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);, O1 f0 A! i  l# @" |' C0 q
        }- k+ {5 _* B! u; I
     }& X/ ^6 u4 L% T0 l. M% B" |
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
; e' l. _4 d, g0 H2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默
2 x0 k9 L$ J" L) @那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29! K; A" b8 S/ N! H( [. q
1、存在所有可以访问的 RAM 空间都可以
  S) t6 E4 \" r- ]. }) K( a2、因为每接收一个字节就产生一次中断 ...

0 b+ W0 k# U5 V9 h8 P那下次中断是怎么触发的呢?" b% j; T9 z  A: j7 I

作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
8 b  |1 u: O: [: a0 c! H8 _  Q接收到下一个字节

. L5 V' a, K. v( u, w* g2 t9 S没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
. T) B2 b( I* i  p. m; q
作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
5 R: ^: b! X5 {( v0 m没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?4 G4 b0 X+ J) ~8 x
...

2 i* p  B; f1 F1 {7 J' |# T- G手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦" y- N- Z2 D3 l

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:27
" @+ v+ d1 |, U; M! s你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

. a4 Q& ]5 ?2 W你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:33; Z" b7 m+ a6 u! u
手动使能发送中断就会触发下一次发送

. o7 T/ ]9 D# L) x: ?您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:43
8 {  e& t9 h: O0 m您好,我想问一下如何手动使能发送中断?

$ @; m% R! r/ w$ m5 k9 ]您好 不好意思回复晚了 * D" D/ I8 P# ^# v( l1 t
应该这样就可以了
2 _3 E* e: P$ N) J. `    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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