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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7561|回复: 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?我现在实现代码如下:
7 g& W- f5 c6 M! A' |  e" f        //kEY GPIO set( c1 K3 J. W) y) ]+ H2 Z
        GPIOBank0Pin1PinMuxSetup();
' W1 k8 J9 h, X, d        GPIOBank0Pin2PinMuxSetup();
! F' `7 Q5 B7 t9 I6 ~5 Z3 v( G4 o        GPIOBank6Pin8PinMuxSetup();
6 J8 X: \" o% k        GPIOBank6Pin9PinMuxSetup();
) m1 ]0 ?0 }6 A) g- Z        GPIOBank6Pin10PinMuxSetup();3 \" A, q' R. L1 I' h/ a
        GPIOBank6Pin11PinMuxSetup();( B& K5 R& M- Z) W
        GPIOBank8Pin12PinMuxSetup();" u: B/ S$ ~1 k5 Z; G! B; O
        GPIOBank8Pin14PinMuxSetup();$ A" q, V4 ?9 w" G  _  c! V3 V
        GPIOBank8Pin15PinMuxSetup();* m7 n# }. a% ]
: _* D+ ]( p# O; f- |& A
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
) |& `; u% `6 j  Q7 U    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);! f, v9 K5 V. g* S9 q
    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
9 m% I; d$ N( ]6 u9 D0 B& w/ g' N    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);9 n3 f+ D4 |( }6 j* ?
    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
8 @9 }# Y+ k% N8 u" ~" G    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
, @5 W+ s7 L( J( v" m    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);# E3 R3 e5 e/ E. @' y1 l
    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);" N4 S0 g; X& C3 o  _
    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);! b8 j0 F" J7 O. }

) {7 s5 B8 y* c! z6 O5 {
) V$ h3 {$ B# Z+ S9 J        // 底板按键中断
5 ~/ `7 d: T: y! Z+ f/ {    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
; |  I. ]  ^* s' {    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none0 ~  k0 j# ^# {+ m; Z" B5 e
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left7 i6 [. r2 W! n( w; |& ^3 O
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
, C( b) d6 b! M4 p: x; c    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down, j8 s9 i8 I0 @: A( ]
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
: V/ e  T% d: z- Q4 Y& |+ m% P    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up: N( _6 K+ b9 v
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel3 c) s2 U% G, P% r: Z) b- T% |
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
3 h" \9 M, t' P' x! W
- K' R8 Q6 m! l6 G! S7 s    // 使能 GPIO BANK 中断' y4 \# n) l2 w. ^) P2 ]
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0- b" E' M) x' V( I/ z
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6
5 u8 a/ B! Q' K    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO84 A4 R: z  ~9 c1 h. |) e5 {, J
8 [$ g1 S: X$ K: g; h# |2 n+ i
        // 注册中断服务函数
. h, j5 ^# ^: R3 C( T        IntRegister(C674X_MASK_INT6, USER0KEYIsr);( ?+ G1 r" h1 E7 v3 ]# Z1 B6 u
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
: [# L9 \% ]) ?3 K8 m( M. D        IntEnable(C674X_MASK_INT6);
) P5 y% B3 v$ D% v) }! S; ?" X3 T& V
        IntRegister(C674X_MASK_INT7, USER1KEYIsr);
' A/ ^1 s, _8 {        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);$ P% E3 R4 K4 g8 R7 e* }# u
        IntEnable(C674X_MASK_INT7);6 c$ \* x$ t* a" K) {7 @

. p& o- h5 T) R3 R* P7 E        IntRegister(C674X_MASK_INT8, USER2KEYIsr);
* [+ t9 s& I1 r1 w        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);- w- S! Q4 q0 u  ?+ A, [9 g
        IntEnable(C674X_MASK_INT8);0 j5 q* Z) Y& V# k% y! G  m/ T
但是现在收不到中断,请问问题出在那里?谢谢  k, x& }) |8 n0 ^9 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:441 }- v3 `) H( a
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...

9 q& }) ~4 U- y6 B1 x0 H# D恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
6#
发表于 2015-7-2 10:44:26 | 只看该作者
bit0rain 发表于 2015-7-2 01:24& R0 a( x+ {0 K0 d3 @! c
追加一个问题:我先在的中断分配如下:, j$ [& N  z6 @5 R- y
4:VPIF* e/ K2 p. V4 i. D! v8 O3 }
5:LCD

' q- [  [) H2 e* ^4 v* k不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
5#
 楼主| 发表于 2015-7-2 01:24:40 | 只看该作者
希望缄默 发表于 2015-7-1 19:428 z5 X1 U9 o! k! `9 a% r7 w# c/ |
从你贴出来的代码看 应该是没有问题的
* k8 z  P9 O$ K+ q2 j  `
追加一个问题:我先在的中断分配如下:
: {! j' Y6 {+ \: f6 E2 \/ w* J4:VPIF
8 I2 o: E1 Z- ]5:LCD0 {5 ^4 d7 _; N8 F) ~* \
6:GPIO Bank09 m& D. \; h& i9 @: J* I
7:GPIO Bank6
* `# b$ |+ J% _, T0 T+ ]8:GPIO Bank8
- R: H; Z0 G- n2 b9:timer
* q/ u  c7 z7 i! {! H" e( ?发现运行后,要么VPIF的中断有效,要么GPIO的中断有效,不知道是什么原因?

点评

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

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
板凳
 楼主| 发表于 2015-7-1 21:10:50 | 只看该作者
希望缄默 发表于 2015-7-1 19:42
. m. `' n* z) I  Z从你贴出来的代码看 应该是没有问题的

: D, _0 `% T5 E( U$ Q& W还有其他要配置的地方吗?比如pll什么的
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 00:35 , Processed in 0.039188 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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