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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7423|回复: 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?我现在实现代码如下:
! r$ T, W! v/ i2 d        //kEY GPIO set* E. s1 m* c# G2 e% T0 E, y8 a+ L
        GPIOBank0Pin1PinMuxSetup();
) [$ q; L( ^/ w8 K' k        GPIOBank0Pin2PinMuxSetup();1 n. g$ a/ |) T6 x5 `" L, S" k
        GPIOBank6Pin8PinMuxSetup();! g( B- H) P+ B* n5 S
        GPIOBank6Pin9PinMuxSetup();- t1 d2 t6 x6 a% ]4 T4 u
        GPIOBank6Pin10PinMuxSetup();
  H( ~  g0 ^3 y* w+ O        GPIOBank6Pin11PinMuxSetup();
1 M% J' E& r+ T1 l* Z: v6 `/ h$ l  @( B$ f        GPIOBank8Pin12PinMuxSetup();6 F) U+ `, g# w6 ~
        GPIOBank8Pin14PinMuxSetup();
6 w8 }( R3 ]; B# n, c. y: d& I& A* y6 b        GPIOBank8Pin15PinMuxSetup();
0 z/ O( ~1 _4 s: d" o# ?/ _: n2 K+ e  Z5 f6 q7 d1 v$ _/ c
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);0 Y: ?& p, g* w
    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
2 j, ~3 J2 }8 s    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
: A- C* |1 g' E" s    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
  h( D4 Z& J2 \    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);5 {3 H2 y% l  H- v- m9 \# r
    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);8 J' @( T3 Y/ S. @1 ?, b' F
    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);% k$ z: L" B( V( |
    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
; y& W5 `3 Q0 ?# N0 ]    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);/ G; i8 f. W# h$ D: W
! d, X& \/ M; Z
- [' T: z/ j/ R# @6 l* c2 U
        // 底板按键中断8 H( @4 M% l' C6 \* G3 F% I
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none2 c# }6 n* }5 L+ u
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none: R+ ?! C0 r+ {7 Z
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left- Y6 a: ?5 v) p; D6 d
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
1 g' s/ t, S( X8 l    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
7 `0 z- H+ b! ?6 i! e1 ^8 p    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
) N4 R, m+ S+ T, m2 [; u& I    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up/ _$ `) S# s* F: ]) C
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
( V( e" i) m$ z9 i7 X  R+ t    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
: H( Q9 W6 `6 y7 Q5 t* a; U7 i# @, |7 _0 r6 r4 n; V" w
    // 使能 GPIO BANK 中断
* j1 O7 C# r5 j    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0
+ @+ p9 z# s8 F0 y1 b    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO66 K- o& R! E& W1 a
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8
  }9 `9 F0 r7 f' g. x; l/ l2 h$ c, L# q1 V# S9 M* x+ t
        // 注册中断服务函数
) T9 O( [  {2 P4 U! ]/ j2 q        IntRegister(C674X_MASK_INT6, USER0KEYIsr);0 z( q8 X  ?. X- X* b6 R
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);0 K6 a/ l! P6 X# r- X" T% t$ m
        IntEnable(C674X_MASK_INT6);+ |/ P3 X) t8 Q# R4 O) c. |
: n) K( u8 {. O8 S) [7 P5 T
        IntRegister(C674X_MASK_INT7, USER1KEYIsr);' j5 X" l2 C! ?/ O9 K/ s
        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);' F& w5 I0 q: \) O
        IntEnable(C674X_MASK_INT7);
# e" `$ {7 [! V$ F/ u4 C  U6 O- h: B: ]7 J
        IntRegister(C674X_MASK_INT8, USER2KEYIsr);
  Z. s' [, ^/ Y! j) z        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
4 K$ z' S/ Q0 R) v        IntEnable(C674X_MASK_INT8);, O  z. }1 C. [* g( i* B- r
但是现在收不到中断,请问问题出在那里?谢谢' ^9 c, H2 B* U* r2 s+ C3 ^
分享到:  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* {2 }( C8 v; n0 h  D# T, S
从你贴出来的代码看 应该是没有问题的

3 h) D& |" u2 d: V0 B( ]# N/ ^还有其他要配置的地方吗?比如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
' Q+ A/ H& \+ e0 Q/ _2 D从你贴出来的代码看 应该是没有问题的
! K' m) `- A% ]) d* i' O
追加一个问题:我先在的中断分配如下:$ R8 F0 v. {5 V. G
4:VPIF
% l5 e) A1 A5 n% X$ }/ D5:LCD
& j. P% D- ~4 G9 ~  R6:GPIO Bank06 @  h8 B, j) v( K0 a
7:GPIO Bank6; @* \2 I" K* T! h
8:GPIO Bank8
4 W, m) M2 b3 N9:timer& l9 ^" N) G: C7 R7 |' h
发现运行后,要么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:249 R3 t6 z6 e6 l/ i* ]# {  m
追加一个问题:我先在的中断分配如下:
2 f9 L+ ^/ T- z( C% s6 F3 O4:VPIF
# I' l/ l" S% a8 w5:LCD

. l& n* V) ^0 d& w3 u* {不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-4 08:41 , Processed in 0.041661 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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