OMAPL138中断问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7943|回复: 6
打印 上一主题 下一主题

OMAPL138中断问题

[复制链接]

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2015-7-1 16:20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:6 V7 D  _1 o8 Q1 M3 R& E4 W
        //kEY GPIO set
7 o/ d! F- w; Q& w$ W        GPIOBank0Pin1PinMuxSetup();2 C  ]( ]2 @; K8 X. i0 s
        GPIOBank0Pin2PinMuxSetup();
& ]9 J* N5 c. G. z  K0 n+ e- U7 p. h        GPIOBank6Pin8PinMuxSetup();
+ Z6 w! b. |0 q, x! `+ x        GPIOBank6Pin9PinMuxSetup();
0 H  p7 e8 f" Z; [+ H        GPIOBank6Pin10PinMuxSetup();3 r$ a: r( }$ x$ e0 j% R0 e" y
        GPIOBank6Pin11PinMuxSetup();$ t" _/ v: b# ]3 \& B/ F
        GPIOBank8Pin12PinMuxSetup();
- W! X( K8 S3 K2 _5 I        GPIOBank8Pin14PinMuxSetup();, L- k. `$ a. |/ k' p' p
        GPIOBank8Pin15PinMuxSetup();
, I" m: S9 O0 [  g8 z* K/ I/ _4 t1 i% x3 F
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
$ R3 J( s* B# `) ^2 f5 B7 h    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
6 l6 W/ }! a$ u$ f, ]* y# |    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
/ n; m; b6 v0 L. h/ o# @* S    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);8 t2 d8 W' d; Z) U
    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
- j7 ]4 q6 R( v. J4 ~* Q/ a    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);3 S  [$ O1 a1 Q1 w5 w; Z) K
    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);0 `6 {; W; i9 w- G) r
    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
0 B" ~5 l) b1 s% O+ e    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);+ V: E+ k9 z' r7 o& H; o5 @) E
  w& c3 D( s7 C% F  [+ @
1 d4 C7 z0 y7 c7 b
        // 底板按键中断
3 l7 u8 m" u3 e/ y1 d# V    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
7 K8 L- x/ g# S    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none- ^& l% O4 |% F1 {( O
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left; o6 B9 e9 E( H9 ]  @
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok* W' P6 |( w* H
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down" [$ l# [5 n/ Q4 P  p" `+ }; S
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right# [/ K% a* `; w8 }( B7 m% \
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
0 w( V% R0 y3 f( ^6 _- y5 n2 m    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
9 i; c! C: R& f8 _6 l    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm2 ~, ^" k9 R$ ?5 ]
9 M! e" W; J# j+ k
    // 使能 GPIO BANK 中断% N- {% b* v! Q; I
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0" Q, a# q  J& \+ \8 e
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6, u! p  L# o9 B) j
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8- H0 V, r  h5 d2 F( t8 \) x7 h

  ]  w& O, I1 ^0 B( C0 j! k        // 注册中断服务函数
# Z& {: u0 e5 N3 Q        IntRegister(C674X_MASK_INT6, USER0KEYIsr);; l- o- m  I- C  \
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
6 Q0 w4 u, O' D6 i7 n: G        IntEnable(C674X_MASK_INT6);" C; w# o! T* q- a

$ B0 r  X0 e. c( m6 u        IntRegister(C674X_MASK_INT7, USER1KEYIsr);$ K$ B0 S- l9 ?* H/ Q
        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
( G( Y! g" s" Q5 e; [, s- V        IntEnable(C674X_MASK_INT7);2 l) d* u! y9 E8 n
- l1 P* W" Z% J! i
        IntRegister(C674X_MASK_INT8, USER2KEYIsr);+ W$ n; j/ |% D2 i; D  h
        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);8 s5 r3 E5 n  d8 P
        IntEnable(C674X_MASK_INT8);
3 H" Q. m* y5 y  b6 m但是现在收不到中断,请问问题出在那里?谢谢
) X# _. k* P+ h; A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
沙发
发表于 2015-7-1 19:42:29 来自手机 | 只看该作者
从你贴出来的代码看 应该是没有问题的
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
板凳
 楼主| 发表于 2015-7-1 21:10:50 | 只看该作者
希望缄默 发表于 2015-7-1 19:42
$ F7 N! w8 x7 t4 u2 }: k7 e从你贴出来的代码看 应该是没有问题的
8 g1 _6 A/ c8 L3 R( ]
还有其他要配置的地方吗?比如pll什么的
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
地板
 楼主| 发表于 2015-7-1 21:44:29 | 只看该作者
搞定了,把初始化这部分函数忘调用了……
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
5#
 楼主| 发表于 2015-7-2 01:24:40 | 只看该作者
希望缄默 发表于 2015-7-1 19:42
! m8 P7 n. s4 n7 k+ j从你贴出来的代码看 应该是没有问题的
( a4 r$ i( n0 h8 y
追加一个问题:我先在的中断分配如下:2 e4 Q' t: D4 C7 j: C$ X" o
4:VPIF
! m- `0 Z1 K& H! U- E5:LCD5 l: E  f! `  X6 ]+ T0 L
6:GPIO Bank0
) m+ [" ~$ a% k7 p" y- s7:GPIO Bank6
6 c4 y# }* F$ X; D3 q8:GPIO Bank8* r2 ^/ j/ }# d3 y
9:timer' H( H# I; u( J. Z8 E8 t
发现运行后,要么VPIF的中断有效,要么GPIO的中断有效,不知道是什么原因?

点评

不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了  详情 回复 发表于 2015-7-2 10:44
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
6#
发表于 2015-7-2 10:44:26 | 只看该作者
bit0rain 发表于 2015-7-2 01:24
- c  ^, ]$ t. A7 c/ v9 Y追加一个问题:我先在的中断分配如下:; `" [) v6 O, `) Y8 X0 J1 z: b
4:VPIF/ R7 z( C7 r$ B- `% n' S; F: }
5:LCD

3 j$ L4 ^6 X1 b/ c: V' I不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:44
  G3 t" W" V* K$ X2 w1 H5 {不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...
3 t; F: G8 O( }
恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-9 19:25 , Processed in 0.043967 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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