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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7776|回复: 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?我现在实现代码如下:" t  A2 O* Z- t! I# d! S9 a
        //kEY GPIO set! {) \' ^8 v6 P
        GPIOBank0Pin1PinMuxSetup();5 m$ x  F' {/ v4 v2 w- `# U7 H
        GPIOBank0Pin2PinMuxSetup();
" s1 t( J: D* h7 a        GPIOBank6Pin8PinMuxSetup();2 q- e  a* @" Z: M: O/ M6 R
        GPIOBank6Pin9PinMuxSetup();0 L# }  d5 I$ U1 d
        GPIOBank6Pin10PinMuxSetup();
+ Z. s: ?. D* [        GPIOBank6Pin11PinMuxSetup();2 z( b: P0 b- ~5 T/ |. G
        GPIOBank8Pin12PinMuxSetup();
0 \8 B6 a. B3 W+ R        GPIOBank8Pin14PinMuxSetup();
* Z6 h. _/ |: _# u        GPIOBank8Pin15PinMuxSetup();
' z7 S( E7 O) C5 {2 o3 K' V( K! z
( ?! @) _2 c% t* k% e    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
3 |2 a, Z0 Y& E% Z9 J* v. I; c    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
) [- r- ?. f+ ]    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
1 \6 J+ T/ f" _9 W1 U6 @; n    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);; o( E" W. |' B' A3 A
    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
" M5 W4 v" z; X/ |* ^$ ^( z    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
: a$ h( d( @! f    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
- s0 @5 C  s: w; y    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);  v3 k- W# O2 ?9 v$ S4 Y8 a
    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);. |% F7 X$ {3 @
8 k3 l6 f3 t3 [8 L

. u, K7 g1 N1 w. c+ y# p1 W        // 底板按键中断
8 Q) u  ?' u  q1 ~) |  N6 M    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
9 P! |2 @( z3 f' R! c, L$ x    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none  M2 d3 ?5 ]- `) p+ b/ Y: F
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left( p$ Z2 b# s0 I
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok) M" {6 |4 K% c  s; @
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
' K; ?9 s6 G7 r3 N! o4 F    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
5 l' v: s0 {( r9 T) `' C+ \    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
; l  W% U+ {6 N9 ?3 C    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
) |. R+ l! X9 y5 p    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
# Q$ J3 g( ?: m& P" k5 d) Q' z: L, I/ C2 R5 L. b+ w% T
    // 使能 GPIO BANK 中断8 l9 m4 A8 |' H4 f2 M
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0
9 n# K, d7 E; l( i: n    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6
+ ^/ q' R* r( g( m, \8 h, c: s- @    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO83 F; P2 N3 Y: m2 G2 Z

6 |) ^+ O7 P& u. O# G- S5 N, b) T        // 注册中断服务函数  B. o8 S; Q  |3 [$ i9 T3 H
        IntRegister(C674X_MASK_INT6, USER0KEYIsr);: s, }: U; s8 j
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);! S( _* J) W0 k) |  o/ S/ K
        IntEnable(C674X_MASK_INT6);
! q9 k; R+ a+ x
. T; D7 h0 u- c  j' a3 S        IntRegister(C674X_MASK_INT7, USER1KEYIsr);
  C5 v1 W6 v1 P        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
& ^% |4 R. w9 N        IntEnable(C674X_MASK_INT7);
0 n6 O: `: ^) P+ ~) F) m% F! q( l# u5 M; A: L7 R( X( J* N
        IntRegister(C674X_MASK_INT8, USER2KEYIsr);+ @$ M7 g( O( u0 B2 f( e
        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
- y) _$ V0 s$ @4 j% w        IntEnable(C674X_MASK_INT8);
  i/ m& W0 z2 n# b2 ^% m9 a$ P但是现在收不到中断,请问问题出在那里?谢谢: ?4 J1 ^* b; Z' ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:44* c* O9 t1 ~$ h5 r, n4 u: d* U  U3 C
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...
; N! k& m/ K8 |$ s' ?! g6 \7 ~9 }
恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
6#
发表于 2015-7-2 10:44:26 | 只看该作者
bit0rain 发表于 2015-7-2 01:24
5 Y; L8 p# P+ N; n9 I, O; @追加一个问题:我先在的中断分配如下:! _% c+ ~  X: Z4 {
4:VPIF$ t- g) g. t( Y0 t/ ]% d
5:LCD
1 `2 u$ M3 B1 d( ^% Q5 B
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
5#
 楼主| 发表于 2015-7-2 01:24:40 | 只看该作者
希望缄默 发表于 2015-7-1 19:425 o$ g, _' i0 |1 Y) E9 k
从你贴出来的代码看 应该是没有问题的
) y' ?6 U1 X0 O0 c8 \$ n+ P4 X
追加一个问题:我先在的中断分配如下:% y4 t9 W2 c* m5 G( H
4:VPIF
2 N6 V$ e% ?  n* H9 @( e5:LCD
$ [! v# h, _( |+ M# }6:GPIO Bank0
3 z2 f1 ^& E: N3 V( c1 N7:GPIO Bank6
. l7 B6 l5 i! g# @0 F% u; \  d8:GPIO Bank80 S% U$ y1 u+ Y& P  q3 y) Q
9:timer# d, X( ]" D! @4 ^8 `$ d
发现运行后,要么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:424 y7 [% Y2 O$ m! p- W/ B
从你贴出来的代码看 应该是没有问题的
- z* L7 u* Y6 j* F# h. q
还有其他要配置的地方吗?比如pll什么的
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-7 08:06 , Processed in 0.040599 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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