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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7322|回复: 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?我现在实现代码如下:1 z/ f6 y# h; D' T' S6 n$ w
        //kEY GPIO set# U9 U) U! [/ h1 o6 R: N4 N) S
        GPIOBank0Pin1PinMuxSetup();
+ c0 }$ k) ?2 l" @. v  K        GPIOBank0Pin2PinMuxSetup();
  q" a* k& }9 i  H  H6 O! _        GPIOBank6Pin8PinMuxSetup();
7 H, Z. ^2 i' C+ u) Y. |  a        GPIOBank6Pin9PinMuxSetup();0 m- J9 }3 |7 k
        GPIOBank6Pin10PinMuxSetup();% w7 `6 ~+ N7 q
        GPIOBank6Pin11PinMuxSetup();
9 H' T% Q! g% H4 G) D        GPIOBank8Pin12PinMuxSetup();
$ M6 N4 O+ a) T9 ~$ O        GPIOBank8Pin14PinMuxSetup();' a' g' H* ~4 \) E
        GPIOBank8Pin15PinMuxSetup();: y* u% O/ t- Z0 l9 |! ]6 w
$ L, Y( L' D5 h7 \( d
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);# ]5 \& m* \) d: q! }  @  w  G  R
    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
- K" z+ _0 s( I7 E* f) ?    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);7 K% B9 r& ~, R
    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
' E/ A8 D  i( W: `% R    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);& S  J7 B  F( Q. y
    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
; q/ [  G4 _# q' B9 Q    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);% m' f$ w+ U) I. ]6 f. B& e0 g# m
    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);! D8 b- u! h, o: Z1 i
    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
+ p5 {  a" j7 Y% p3 T2 ^/ J( p! r% `* A0 ]( e
( J) A7 H: o0 J  M; }: {  m  `
        // 底板按键中断; I4 x2 S, P9 m
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
: ^3 Y+ z& V# t3 O9 S  F    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
" H9 d2 R/ d5 M: m# @    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
( g( D, j1 K: |! i8 P    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok# L; B" u, Z  m2 h
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
4 g1 U2 B% [) X. @" R    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right& h, p2 M4 j! Y8 }4 l
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up0 T# w: Q& H( u  d7 c( q
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
% a4 i5 U* c7 `% G; Z    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
; J* f" i3 E7 f2 ^* M) Q
0 \+ M; `) b4 r    // 使能 GPIO BANK 中断
3 n) K/ ?0 |, Q6 B5 s    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0
1 x. G' Z# W" V3 ?    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6
( b3 W! U4 V; t, P9 _    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8  Z1 y# J- k' [1 R$ H1 b

! v6 w- J% Z" x' s9 ~        // 注册中断服务函数
& q7 {7 Y9 f+ x        IntRegister(C674X_MASK_INT6, USER0KEYIsr);6 F" d3 i9 _% L
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
: n' S7 }" T5 n2 G; E0 v+ F        IntEnable(C674X_MASK_INT6);. Q: K. _; ?& T! S  X9 O
& W8 [2 G; N3 A
        IntRegister(C674X_MASK_INT7, USER1KEYIsr);
) ]: I5 c3 B; S' M  J$ O        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
7 L% Y* w: ^7 M# S        IntEnable(C674X_MASK_INT7);
6 J* a2 G+ ^4 H: G$ I' @7 k0 d! o
! V+ k1 L: H; n        IntRegister(C674X_MASK_INT8, USER2KEYIsr);
, q! j+ G  \2 ^! Y' H) E+ C& P1 H        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
% w: ]# X0 T6 B. H1 f; b0 j& n        IntEnable(C674X_MASK_INT8);
- h9 F& }* v' K, }但是现在收不到中断,请问问题出在那里?谢谢
1 D0 R% D- c( _/ c, u5 f( s; L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:44% X* _" u4 C; U& {  Z
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...

& x# j  C3 w& I$ Q3 C" p  q3 ~恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
6#
发表于 2015-7-2 10:44:26 | 只看该作者
bit0rain 发表于 2015-7-2 01:24/ k5 D9 E( D6 ?2 Y" I3 v1 J# _8 ?+ \
追加一个问题:我先在的中断分配如下:; }5 R/ }: f9 C5 N
4:VPIF( @. z& Z/ L7 o2 o8 J
5:LCD

. }# I: r7 g' ?1 V不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
5#
 楼主| 发表于 2015-7-2 01:24:40 | 只看该作者
希望缄默 发表于 2015-7-1 19:427 V* }6 q  N3 S7 Y' x2 \" m
从你贴出来的代码看 应该是没有问题的

1 l/ R3 m, x% g: N! f追加一个问题:我先在的中断分配如下:
! s' u! G' k: v8 N) h7 [: e' g4:VPIF
# G2 j  Y7 M4 o; s, ]( t5:LCD; W) k0 n) A) D$ @& f$ o
6:GPIO Bank0
( Y: b( F. `- o0 i- z) i9 s7:GPIO Bank6
3 r+ r& S& E5 r! E4 o) Y8:GPIO Bank8; v( Y1 a- v9 O1 Z
9:timer- T" j0 O' c/ I
发现运行后,要么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
% R5 u& m" K: J从你贴出来的代码看 应该是没有问题的
+ w* m, v& r( F1 j# B, K
还有其他要配置的地方吗?比如pll什么的
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 12:14 , Processed in 0.039436 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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