嵌入式开发者社区

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

作者: jj909305    时间: 2016-11-10 21:45
标题: 关于“UART2_INT——UART2串口中断收发”例程
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问: n$ N' S- P7 T/ n/ V0 X
1.。DSP解算出来的数据是存在哪里?
+ [3 s0 E! U4 _4 G7 S2.。在例程中有这段代码:
: S3 T6 w5 {8 [2 X8 c unsigned int int_id = 0;' S, g6 _; R- b. ]7 F: A
& Y# \5 u+ D( ]( g# A" b+ g
    // 确定中断源, P# D: N. y9 w# B$ S! d: |! G
    int_id = UARTIntStatus(SOC_UART_2_REGS);" Y$ K' G+ Z6 [9 Y" ~

% a2 b5 M7 f, M5 V7 m. H4 U    // 清除 UART2 系统中断
0 k* ^' n% G% a2 q8 w    IntSystemStatusClear(SYS_INT_UARTINT2);) n6 [& b8 r0 d  f4 K
6 [, _/ c, q2 J5 n/ }7 Q# i
    // 发送中断
+ N8 j9 D& [6 H    if(UART_INTID_TX_EMPTY == int_id)6 @, v: y$ `" k
    {
+ I, A) I2 D9 a/ y( H: y% x        if(0 < length)
: U- L! l9 j% L$ D4 r        {* B: s4 R" s$ b+ Y$ A/ D$ `
            // 写一个字节到 THR
  Q* n0 A7 D0 K9 `' f7 K2 ]            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
% v0 g0 {- s0 M! H2 T            length--;3 A: }4 f7 R" d( a& F, i' E, k
            count++;8 g0 F5 W" z  p
        }! z# i% o. w& [
        if(0 == length)
' f+ x: l5 s- ]' f" o" D        {
/ p! B  D/ G* ~. ~: ~            // 禁用发送中断3 C) k  s) J; y. o& w# _
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);1 j+ M4 e) W6 Y9 Z0 e9 G/ M- U& M
        }
% M8 B/ s7 I) P* L0 b* a  W. m     }$ S+ `. V9 l6 y3 ]; y& s
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
作者: 希望缄默    时间: 2016-11-11 15:29
1、存在所有可以访问的 RAM 空间都可以
8 o$ T: O/ B4 X9 g8 j# L: X2、因为每接收一个字节就产生一次中断
作者: jj909305    时间: 2016-11-11 20:12
@希望缄默 9 F1 j; T- T0 r1 t: a4 s
那下次中断是怎么触发的呢?
作者: jj909305    时间: 2016-11-11 20:23
希望缄默 发表于 2016-11-11 15:29
& ~' M/ `: v" W1、存在所有可以访问的 RAM 空间都可以* ~& V$ N( u( ^5 i& C. {
2、因为每接收一个字节就产生一次中断 ...
0 l0 m+ w4 B5 C
那下次中断是怎么触发的呢?
. @0 M: a  t; Y, K) {
作者: 希望缄默    时间: 2016-11-12 05:43
接收到下一个字节
作者: jj909305    时间: 2016-11-12 09:43
希望缄默 发表于 2016-11-12 05:43
; Q* s' R" l, y0 n; X接收到下一个字节

% u9 g2 }* D7 i* ^* n6 e没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?* x. A. p# {4 u7 w6 W' }

作者: 希望缄默    时间: 2016-11-13 21:33
jj909305 发表于 2016-11-12 09:43
3 }9 d9 m3 i& h没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?3 ]- D4 Y9 C7 D5 p! \
...
" h* f# U" ^; O, u$ c1 b( z, A9 w  b
手动使能发送中断就会触发下一次发送
作者: Etihad_21    时间: 2017-3-5 22:27
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦! {  f) c# N- M4 J+ H! ^

作者: jj909305    时间: 2017-3-6 16:54
Etihad_21 发表于 2017-3-5 22:278 w0 f5 p/ s/ x* G
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
7 @+ v9 j1 \, m2 D# l
你好。。我后来不搞这块了
作者: jiahaonan1022    时间: 2018-3-22 11:43
希望缄默 发表于 2016-11-13 21:335 k, U& h" G9 K# m+ s
手动使能发送中断就会触发下一次发送
2 }( ^! j6 ~# {5 h' f
您好,我想问一下如何手动使能发送中断?
作者: 希望缄默    时间: 2018-8-7 15:02
jiahaonan1022 发表于 2018-3-22 11:432 u1 \& O/ y; l! t* Y5 Z5 i) ]0 c
您好,我想问一下如何手动使能发送中断?

8 a  ]8 s: A9 `, V' A# i; G$ `您好 不好意思回复晚了
, M  S3 r1 b- V+ h2 V( [- A应该这样就可以了
( @0 e: [/ B" ]2 B3 s: y    UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)




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