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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
跳转到指定楼层
楼主
发表于 2016-11-10 21:45:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问3 p! r" x6 L# _3 e
1.。DSP解算出来的数据是存在哪里?& j& |/ a' E" {
2.。在例程中有这段代码:* [! m* h& H, s1 J. D: X
unsigned int int_id = 0;
8 p% [$ H* ]4 L- ~
: u6 S: k! s8 s: D    // 确定中断源
# s5 m5 p2 b; Q" i    int_id = UARTIntStatus(SOC_UART_2_REGS);% o% p3 E9 W& H% v' y; X

, \9 x  S: U/ H    // 清除 UART2 系统中断( j" Z7 b+ X) a% z- v( ~' w0 k  ?
    IntSystemStatusClear(SYS_INT_UARTINT2);9 S# n) U" _( h! w3 m( H. b, y
- i- ^# u* w+ G- ]% L$ ?
    // 发送中断
6 y9 m: ^9 a! O4 c$ T    if(UART_INTID_TX_EMPTY == int_id)
$ i0 H/ M* s6 v    {
4 u% [" Y0 q4 M# Q        if(0 < length)! O1 n) L' X" q. h7 o8 E
        {0 w8 S1 a/ ?# `7 s) h( w
            // 写一个字节到 THR1 I1 B1 l& X5 Z3 n  u
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);% Y( Y6 ^. w; b; g4 g  [
            length--;. J# Q  o6 a3 e6 z" d# H
            count++;" N" @% E4 @' }) ~* ^; @. J8 q3 e6 s
        }8 c' d6 v5 l- Z9 y6 |
        if(0 == length)
8 K7 f$ K! E, t: b& R        {
5 U; e! ]" K6 C7 `            // 禁用发送中断: h1 D3 y5 a/ H$ w' b2 x
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);
, d0 b: a. L: X: p8 C9 p$ z9 F, j        }8 S( r% o3 e8 _3 V9 R/ ~+ N5 {3 A
     }
1 R" `# e/ _: Q" `我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
推荐
发表于 2016-11-11 15:29:40 | 只看该作者
1、存在所有可以访问的 RAM 空间都可以* d; q$ a0 d4 N' m0 D
2、因为每接收一个字节就产生一次中断
回复 支持 1 反对 0

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
板凳
 楼主| 发表于 2016-11-11 20:12:47 | 只看该作者
@希望缄默 . E+ A2 m: x4 I% ]
那下次中断是怎么触发的呢?
回复 支持 反对

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
地板
 楼主| 发表于 2016-11-11 20:23:23 | 只看该作者
希望缄默 发表于 2016-11-11 15:29
8 `8 u$ X% R4 t* }% E1、存在所有可以访问的 RAM 空间都可以* p: W9 f% {0 @- Y# R- L
2、因为每接收一个字节就产生一次中断 ...
5 u/ Y9 R5 j4 n$ ~
那下次中断是怎么触发的呢?
  @8 ?/ o: K# L' q( b* V
回复 支持 反对

使用道具 举报

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:43; B) v. y5 @5 I/ ]  A
接收到下一个字节
# F, U8 l+ j1 O. S; M/ o' _' F, c
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
0 K0 M) L; m9 s' p' ^$ k4 d; W

点评

手动使能发送中断就会触发下一次发送  详情 回复 发表于 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% _5 Y% g. W) B# \( `
没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?4 H  J& Q* X  }8 l
...

& O! y* n! X' M手动使能发送中断就会触发下一次发送
回复 支持 反对

使用道具 举报

1

主题

2

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

20

主题

65

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
9#
 楼主| 发表于 2017-3-6 16:54:55 | 只看该作者
Etihad_21 发表于 2017-3-5 22:27
0 P0 \* m6 O$ G& r! E% @& q& {你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...
1 S# e. |: z# Y; d9 I7 w
你好。。我后来不搞这块了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

积分
1021
10#
发表于 2018-3-22 11:43:17 | 只看该作者
希望缄默 发表于 2016-11-13 21:33
+ J% @) ]  T: F5 o手动使能发送中断就会触发下一次发送

8 i5 C  m1 k6 j1 s: `您好,我想问一下如何手动使能发送中断?

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 12:03 , Processed in 0.047496 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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