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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7227|回复: 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?我现在实现代码如下:
( A7 ^& A+ H7 ~        //kEY GPIO set; K' c3 \$ w% J# S/ B" x& w
        GPIOBank0Pin1PinMuxSetup();/ D) Y% Q" T; ]( P# r( I; i' C0 n* [
        GPIOBank0Pin2PinMuxSetup();
# ~6 o1 W! r' s) F! R3 R        GPIOBank6Pin8PinMuxSetup();6 |8 o" O8 e4 X8 i
        GPIOBank6Pin9PinMuxSetup();
3 b' k4 o3 p6 v, G. R+ S, p        GPIOBank6Pin10PinMuxSetup();
! b8 J$ _- j: D- o& N        GPIOBank6Pin11PinMuxSetup();
& X" e7 R/ W' J& L        GPIOBank8Pin12PinMuxSetup();
, L  K" |) ~# R3 D6 N2 |        GPIOBank8Pin14PinMuxSetup();% W" `0 ~, z. e! E" I" [- B" }. Q
        GPIOBank8Pin15PinMuxSetup();
5 s( a* [( \# c' `* L; S6 ~3 Q( l; ?3 ^8 L; ]
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
* |3 }, j. _! s# j  W  e    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
. S1 N# M, R9 k1 \" e    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);  {/ c: P, A) m3 p# M, ]1 k
    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
( v" R: n2 [4 K% A5 n    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
% ^) ]' U2 m3 b: o! [! ^: |/ E6 f; G    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
# ]! W8 K! z% k+ R    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);$ Z" }, `7 ]) b% U
    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
! |% h4 W0 r( |- l    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);% k& f& b' r" A
) c. A2 i+ B( k, V$ |9 c
3 n" p. J7 t8 L
        // 底板按键中断
5 M2 R/ y/ T# \& j6 [    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
: h: R" O( S9 l  i    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none: X1 m5 e& {5 B; V9 |
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left6 l( s4 w5 _4 g; h. J9 P
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok) s- H" O) J7 C8 l& j
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
: }/ z( H# F0 C6 Y! T    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
- }& i- J0 t% x8 ]    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up9 h& }2 V( g% I
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
: k6 ?; f" |" @3 O' F! c$ E) u    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm7 d8 K7 {% Q$ B& m9 Z

5 f+ x% P& S5 X1 I( |) E8 X; v    // 使能 GPIO BANK 中断* s1 X6 `* b: |7 K$ G" W
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0
8 G1 O- h$ V/ z9 [7 ^2 J: S5 w    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6
! ?! u' a! p* \0 [2 @  v; g    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8" r; j1 q9 [0 m& `: S2 Q2 Z+ T
4 |, [  Q5 z# J- [8 {) L
        // 注册中断服务函数/ q2 \' r2 c$ w9 _* i$ b7 Y
        IntRegister(C674X_MASK_INT6, USER0KEYIsr);
3 M  u% y% a8 w* q4 k5 q        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
, k% S4 f: `0 L& B3 `- _        IntEnable(C674X_MASK_INT6);
0 U: C' Q7 @0 g: F4 S
5 K- g7 o+ \  I  D        IntRegister(C674X_MASK_INT7, USER1KEYIsr);
, N* J8 R. C& q5 y7 y5 ~$ `# Z8 y        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);7 h: e1 g0 J: Y7 z
        IntEnable(C674X_MASK_INT7);
+ O0 I; T, q" c. P2 _% ^' K& M, o) l% e
        IntRegister(C674X_MASK_INT8, USER2KEYIsr);7 I2 M% e* q( C* p1 _& Y& m. Z
        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);7 K, p# Y: S5 Q! d* s: N
        IntEnable(C674X_MASK_INT8);
5 O) ?; S$ e9 A5 a但是现在收不到中断,请问问题出在那里?谢谢
8 P; ~/ b3 a( i  N- h3 s9 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
6 Z& t% I  }7 v) f* S9 B6 o' M3 Q' z从你贴出来的代码看 应该是没有问题的

* e( M0 Q9 O7 N; G: G. [8 m$ \还有其他要配置的地方吗?比如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
0 T" E! g- |" S( D+ q& u从你贴出来的代码看 应该是没有问题的

! n0 O/ a( `* C" k4 l) v% K追加一个问题:我先在的中断分配如下:$ B7 |0 N( P+ x1 E$ d8 g
4:VPIF! a5 F$ Q4 a: L1 M- S
5:LCD
8 n( n1 e* ^' F* `* ~6:GPIO Bank0
6 d# j& q) G, ~8 Z1 \7:GPIO Bank6
$ c4 B6 M+ j1 Y0 ]& d3 H+ M; n8:GPIO Bank8: j" ^- W' Q; P) w& G
9:timer' O( f6 j7 o6 A; \, S
发现运行后,要么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
" {9 p" R% K) q9 e追加一个问题:我先在的中断分配如下:
( H/ Y. v3 @( o! `/ k: D* P4:VPIF0 D7 @& u6 @* z
5:LCD
) m' ]) u. g3 C
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:44; Y* ?3 v- x+ r& E' r; c+ [
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...
) x$ x$ |1 L0 m
恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 08:16 , Processed in 0.046396 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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