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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1798|回复: 9

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

[复制链接]

20

主题

65

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
发表于 2016-11-10 21:45:35 | 显示全部楼层 |阅读模式 |文章模式
现在用138芯片搭一个导航平台,DSP用于导航解算,ARM用于通过UART2与PC通信。想问
( n0 J" {8 s- Z/ e" k1.。DSP解算出来的数据是存在哪里?2 P) G& `! Q$ v6 ?  t1 M, L/ a
2.。在例程中有这段代码:( p% r* S# \8 z2 j
unsigned int int_id = 0;7 y: G; J6 m5 k$ s- B7 K7 T* O; p
, C1 N4 `5 M4 }) ]' ?4 d' Z) @! U
    // 确定中断源
" V( \+ F( j) G. Q% v1 q5 g    int_id = UARTIntStatus(SOC_UART_2_REGS);& x. I6 s3 ~" N# Y, c

, |1 M* I& [7 c& q" U3 t    // 清除 UART2 系统中断. G* T/ s# }9 S, L& z$ B: \
    IntSystemStatusClear(SYS_INT_UARTINT2);+ u9 j, u. t, E

& W* |& q2 {: C# |, _    // 发送中断. D: x# P! S  K+ F7 q' R: C
    if(UART_INTID_TX_EMPTY == int_id)
% J% E. l5 ]9 V7 ~4 R: g    {- s3 h. H7 l2 W- W+ x" F: y) r
        if(0 < length)
  E, w, Y# r' I. [% ]1 F9 s        {
5 t) B1 D. Y+ f3 B/ Y, G            // 写一个字节到 THR2 h% D9 ^( A+ |+ ?) K. Y
            UARTCharPutNonBlocking(SOC_UART_2_REGS, txArray[count]);
0 u3 @* s* i! _/ N4 W% z  P            length--;. i0 |9 \6 D/ k+ Z& u& h; H
            count++;/ L, n8 u5 b1 O. ^/ e
        }1 ^& J8 ~$ t2 ^
        if(0 == length)
: T- Z& ~5 ^: z/ {- H        {: {: l0 v  `! S8 B* c0 D5 O& J
            // 禁用发送中断; A6 e$ {* w# e  _* a- o6 X
            UARTIntDisable(SOC_UART_2_REGS, UART_INT_TX_EMPTY);) j7 V, L" l) T. B( h
        }
  x7 ?- s9 K+ F     }3 G( t6 d- _% e+ \) Q6 O6 a6 J
我的问题是这里为什么用if不用for??另外这个UART中断是怎么触发的?
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有10人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

15

主题

1343

帖子

4522

积分

广州创龙

Rank: 8Rank: 8

积分
4522
发表于 2016-11-11 15:29:40 | 显示全部楼层
1、存在所有可以访问的 RAM 空间都可以* m0 x; M$ j6 E. z  {7 F
2、因为每接收一个字节就产生一次中断
回复 支持 1 反对 0

使用道具 举报

20

主题

65

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
 楼主| 发表于 2016-11-11 20:12:47 | 显示全部楼层
@希望缄默 9 z. j, |/ x! e- c" u, Y
那下次中断是怎么触发的呢?
回复 支持 反对

使用道具 举报

20

主题

65

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
 楼主| 发表于 2016-11-11 20:23:23 | 显示全部楼层
希望缄默 发表于 2016-11-11 15:29
1 c; X  d- l% C2 z: M! j* i! c) F" j1、存在所有可以访问的 RAM 空间都可以! Y, [, H& J6 u% I/ x
2、因为每接收一个字节就产生一次中断 ...

$ Z8 }9 f" J* a那下次中断是怎么触发的呢?
  \+ t) S; H4 O
回复 支持 反对

使用道具 举报

15

主题

1343

帖子

4522

积分

广州创龙

Rank: 8Rank: 8

积分
4522
发表于 2016-11-12 05:43:15 | 显示全部楼层
接收到下一个字节
回复 支持 反对

使用道具 举报

20

主题

65

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
 楼主| 发表于 2016-11-12 09:43:49 | 显示全部楼层
希望缄默 发表于 2016-11-12 05:43. X4 f; C! G& l: {
接收到下一个字节

5 |4 n" `0 C* w* m$ d( l& ?没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?
" d, }; u! _+ f, l" Z$ j& {

点评

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

使用道具 举报

15

主题

1343

帖子

4522

积分

广州创龙

Rank: 8Rank: 8

积分
4522
发表于 2016-11-13 21:33:36 | 显示全部楼层
jj909305 发表于 2016-11-12 09:43
) z7 w+ y) {. h0 `2 h7 P+ c# E没懂啥意思。。我的意思是发送一个字节后下次中断是如何触发的?在软件里哪里有体现还是硬件来完成的?( `& K. v. A! T% p) F
...

/ k' e( Y( L/ [手动使能发送中断就会触发下一次发送
回复 支持 反对

使用道具 举报

1

主题

2

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

积分
1021
发表于 2017-3-5 22:27:54 | 显示全部楼层
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时,接收的数据不知道什么原因出现了连续的FF或者00?希望能够解答,谢啦3 j; y6 R$ ^9 `1 e- m- C9 d4 n
回复 支持 反对

使用道具 举报

20

主题

65

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
 楼主| 发表于 2017-3-6 16:54:55 | 显示全部楼层
Etihad_21 发表于 2017-3-5 22:27% y& P4 N( r3 k- ^5 v
你好,想问你个问题,你有没有用串口实时接收过数据呢?我在实现NovAtel接收机实时通过串口传输数据到DSP时 ...

" k, O: ]  B  ^9 G你好。。我后来不搞这块了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

1021

积分

金牌会员

Rank: 6Rank: 6

积分
1021
发表于 2018-3-22 11:43:17 | 显示全部楼层
希望缄默 发表于 2016-11-13 21:33
' z4 N$ I  Z0 N- C6 e! e) d手动使能发送中断就会触发下一次发送

2 e- ?$ m4 n' {5 @" c. w您好,我想问一下如何手动使能发送中断?

点评

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

使用道具 举报

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

本版积分规则  回帖提醒

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

GMT+8, 2018-9-24 04:55 , Processed in 0.279583 second(s), 63 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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