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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
跳转到指定楼层
楼主
发表于 2016-11-10 21:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
# A, C8 O- [1 h. V3 n6 p" y1 ^& P' \1.。DSP解算出来的数据是存在哪里?
8 w8 d) f5 u- F2.。在例程中有这段代码:
$ \, u/ `+ W5 ~0 o0 ~; |2 M1 h unsigned int int_id = 0;
3 G% Z' ?: C: l5 ?/ w& \* ?( T6 a. M9 O' Y
    // 确定中断源
6 S* F7 [/ c- T% q8 j4 r2 I6 h6 w    int_id = UARTIntStatus(SOC_UART_2_REGS);
5 ]6 L* Z/ x# q, q9 X0 j6 ~
. N2 x: F2 T: A5 Q* M    // 清除 UART2 系统中断
9 F0 o6 O; @) n, {; i7 }    IntSystemStatusClear(SYS_INT_UARTINT2);/ i! L% F* I* I
& x; w; Y+ S0 T6 b, [0 \0 r
    // 发送中断
, |- S  G& t. x' V* i( A    if(UART_INTID_TX_EMPTY == int_id)
$ a9 h' A' U/ `0 U; O3 K  I/ I    {
3 n2 f) Q: Q0 p* I/ W        if(0 < length)
4 D% \: t8 |4 `        {- V! R% g- u* ~0 T4 x0 g3 l
            // 写一个字节到 THR
1 m6 g+ J4 x: V9 Z/ t$ Q& i& J; G. b            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);) a; _* l- p; L6 T8 O. Y* s
            length--;
' [5 S7 o2 K# }7 `9 b$ V            count++;
3 G1 n% l$ u; x6 T6 p& s; o        }- S  d! a4 V0 r& i  T
        if(0 == length)
$ z  v% c8 p/ X8 e3 z        {
! F$ D, B$ l# a; J) ^            // 禁用发送中断" c& E0 t6 Y& e" y* @$ L
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
& t6 h, P9 ?8 L0 L4 ]6 p: v' F        }
5 K( V  t+ h( s     }
' E4 n( ^# @" y+ r! m我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
推荐
发表于 2016-11-11 15:29:40 | 只看该作者
1、存在所有可以访问的 RAM 空间都可以
4 A  f2 u3 h9 x: B0 w( \# N2、因为每接收一个字节就产生一次中断
回复 支持 1 反对 0

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
板凳
 楼主| 发表于 2016-11-11 20:12:47 | 只看该作者
@希望缄默 ; t# q$ Y7 y) D1 @) r) H$ X# T: Q
那下次中断是怎么触发的呢?
回复 支持 反对

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
地板
 楼主| 发表于 2016-11-11 20:23:23 | 只看该作者
希望缄默 发表于 2016-11-11 15:29
% f1 L- e; s( x& P% ^+ Q" w1、存在所有可以访问的 RAM 空间都可以: T* {: K0 p+ K& K/ z
2、因为每接收一个字节就产生一次中断 ...

  I" d  t$ e* ?# B2 d. B# l那下次中断是怎么触发的呢?
0 q( l- e8 E" c# N
回复 支持 反对

使用道具 举报

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:439 y- z# x) R. R3 L( `& a  c
接收到下一个字节

7 Z  f1 p% M) @+ O' [没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?) V( A: v5 l, S, d8 Q5 ~( t

点评

手动使能发送中断就会触发下一次发送  详情 回复 发表于 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$ J0 j! B# l; X  P' j! {
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?9 M& k" r- R& M
...
& j* e$ e- P+ g1 |' B! C( z- Q
手动使能发送中断就会触发下一次发送
回复 支持 反对

使用道具 举报

1

主题

2

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
9#
 楼主| 发表于 2017-3-6 16:54:55 | 只看该作者
Etihad_21 发表于 2017-3-5 22:27
# z1 t7 ~! |. k3 _你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
" h/ t4 ^/ b- q# ?# }. q: j+ H
你好。。我后来不搞这块了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

积分
1021
10#
发表于 2018-3-22 11:43:17 | 只看该作者
希望缄默 发表于 2016-11-13 21:33
: `/ e1 V3 i# e1 |手动使能发送中断就会触发下一次发送
1 i  _) _0 q( R- t# w/ x, i/ z
您好,我想问一下如何手动使能发送中断?

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 19:18 , Processed in 0.047174 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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