关于“UART2_INT——UART2串口中断收发”例程 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10563|回复: 9
打印 上一主题 下一主题

关于“UART2_INT——UART2串口中断收发”例程

[复制链接]

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
跳转到指定楼层
楼主
发表于 2016-11-10 21:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
: B7 C" R+ O6 u& j" x1.。DSP解算出来的数据是存在哪里?
$ t  C' D8 _' h" u5 f4 x+ Y2.。在例程中有这段代码:
, d& |6 `$ S" y/ {, ?/ Q unsigned int int_id = 0;
0 o) h3 {$ T+ m1 ~% W4 W$ @& X' ?7 _1 r: @
    // 确定中断源
* h4 X) Q: t2 {1 _    int_id = UARTIntStatus(SOC_UART_2_REGS);% J7 ^0 s( j4 E! O

" O" _9 G% D, S8 H! o    // 清除 UART2 系统中断% K6 l/ O2 s% H' ^+ X
    IntSystemStatusClear(SYS_INT_UARTINT2);; V8 g: Z5 l& F1 ~$ S# P

( p; h) N2 P1 D0 x/ ]9 L    // 发送中断  N% U! E& c' N0 O( ]; E
    if(UART_INTID_TX_EMPTY == int_id)) a) G+ g* j  O6 b3 |2 e1 G
    {
; G- u1 d- N6 \* |) F        if(0 < length)
* u1 [9 U* b* c; Q4 P- C. O        {) v" R3 U0 U( F
            // 写一个字节到 THR
( Z0 T( H: m  G; ^% q* ?            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);, }  Z# X5 k. Q7 h8 O* |% I
            length--;/ R) H- E9 k1 A7 H5 `& q8 ]
            count++;
3 {+ P3 R0 o4 ~3 L) L, i        }. X3 }3 K8 z6 v, A( S
        if(0 == length); G  r, H2 r+ k8 Y: O( l2 F8 B; j, X
        {7 d* m' y  ]' c. A$ w8 v
            // 禁用发送中断
) b% i8 V' ]8 e1 s+ N. b' u            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
5 Q- R1 z+ s! _8 o( f- E        }
5 C) Y$ ^. f" I     }
# d& [( a5 ?/ x4 r5 j* _我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
推荐
发表于 2016-11-11 15:29:40 | 只看该作者
1、存在所有可以访问的 RAM 空间都可以
/ E5 f/ c& O6 a+ b2、因为每接收一个字节就产生一次中断
回复 支持 1 反对 0

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
板凳
 楼主| 发表于 2016-11-11 20:12:47 | 只看该作者
@希望缄默 8 i$ ]% ]( b# G) x
那下次中断是怎么触发的呢?
回复 支持 反对

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
地板
 楼主| 发表于 2016-11-11 20:23:23 | 只看该作者
希望缄默 发表于 2016-11-11 15:29
; N1 c3 \2 H4 w1、存在所有可以访问的 RAM 空间都可以
1 T  U- ^# S& ?4 j2、因为每接收一个字节就产生一次中断 ...
1 F1 g$ D  ?& N9 t% r0 [8 q% \' `
那下次中断是怎么触发的呢?" ?- {1 d' c6 J: A
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
5#
发表于 2016-11-12 05:43:15 | 只看该作者
接收到下一个字节
回复 支持 反对

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
6#
 楼主| 发表于 2016-11-12 09:43:49 | 只看该作者
希望缄默 发表于 2016-11-12 05:434 J- E/ c: H& V7 N' t
接收到下一个字节
( n1 n3 w- F3 H/ g
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
  R5 Q, r3 Y' |8 V% o* ^

点评

手动使能发送中断就会触发下一次发送  详情 回复 发表于 2016-11-13 21:33
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
7#
发表于 2016-11-13 21:33:36 | 只看该作者
jj909305 发表于 2016-11-12 09:43
8 @8 k/ B" D% R& K. v没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
# i5 p: Z$ ]. ]7 T2 f; P: w ...
) G2 O& i- w, y% ]- m
手动使能发送中断就会触发下一次发送
回复 支持 反对

使用道具 举报

1

主题

2

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

积分
1021
8#
发表于 2017-3-5 22:27:54 | 只看该作者
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦
# o4 G0 U! Q) R: e
回复 支持 反对

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
9#
 楼主| 发表于 2017-3-6 16:54:55 | 只看该作者
Etihad_21 发表于 2017-3-5 22:272 Z* C* \' u1 N
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
& T: J1 s& \- n9 p: w* g6 o/ E/ x
你好。。我后来不搞这块了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

积分
1021
10#
发表于 2018-3-22 11:43:17 | 只看该作者
希望缄默 发表于 2016-11-13 21:33
3 |: b0 X" I$ C$ ?: i手动使能发送中断就会触发下一次发送
! B3 m3 U3 v. b, W+ I; q9 g2 Y
您好,我想问一下如何手动使能发送中断?

点评

您好 不好意思回复晚了 应该这样就可以了 UARTIntEnable(SOC_UART_2_REGS, UART_INT_TX_EMPTY)  详情 回复 发表于 2018-8-7 15:02
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-4 02:57 , Processed in 0.042501 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表