OMAPL138中断问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8109|回复: 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 b5 _& X/ X* j/ n% x! _9 J8 x' z        //kEY GPIO set& |) w7 f3 V% I% l
        GPIOBank0Pin1PinMuxSetup();
2 ?. i4 C1 L5 O7 u$ ~: |9 i, R        GPIOBank0Pin2PinMuxSetup();
; n# V% T  o/ a0 I0 m1 L& D( @$ n; B        GPIOBank6Pin8PinMuxSetup();
0 A7 D. ^. R& k5 j        GPIOBank6Pin9PinMuxSetup();( r) q. N2 N2 s7 a
        GPIOBank6Pin10PinMuxSetup();
( g2 a& C7 L& `2 a4 e4 X- B, \        GPIOBank6Pin11PinMuxSetup();; u5 Q' s* A8 l4 a4 s. }
        GPIOBank8Pin12PinMuxSetup();
2 t( {+ _. f+ D        GPIOBank8Pin14PinMuxSetup();
! s: Z9 ?1 F' D        GPIOBank8Pin15PinMuxSetup();
, U" [9 p/ @8 S- |% n
4 [# S: I  L& X% r5 z+ `' {/ q; g/ n    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
8 Y# J. u0 Z6 ]4 @    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);# e  [) X  N$ a0 c( Q' O+ f
    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);0 e5 t' a% I9 p; Z* ?
    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);. Z$ I9 D: p2 l9 T* R# T
    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);5 s6 m- Z5 C$ H& ?
    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
- z( X# c- c1 ?! ?8 I9 G    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
" @% D, k5 k1 Y+ ~- _+ j, ?! X    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);. T8 {/ c6 V7 @  U
    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);# ^1 f5 c& S2 Z  c
4 e7 J$ ]0 \4 N! Q. K4 d3 e" j

, l- @, H7 H  g        // 底板按键中断
) \9 G3 o5 `7 C" r    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
4 v: _1 P, {8 B$ l    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none# q; D8 ^. \; d; S0 c0 v' C" B! r
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
+ T. z$ L/ [: x1 \% |    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
8 t0 [- S/ k4 s7 Q    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
, k" f% }1 @5 n) y' x+ X6 M    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right/ Z4 n$ }, K; K: I  G! D
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
0 l; e6 J. p  t/ ?4 X  ?& Y# w# c    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel  s$ h- y! J1 @* L8 R# F' J
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
: H0 w% l: k4 ^: m; j$ _+ D) M- x2 T# q* @
    // 使能 GPIO BANK 中断
0 U& n4 D) V1 E    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0+ ~& W% N$ r% |5 u* k) ^: a
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6
  B, M0 r9 [$ Y( H% d; w    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8- H: N* C, `( y: h) ?6 Y: V  U

; h" `7 ~+ q, `- u  {" G' }9 T        // 注册中断服务函数
' C! O+ r- H" K9 u        IntRegister(C674X_MASK_INT6, USER0KEYIsr);2 `) [7 N4 ?( v, N% |
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
. C# Y( _5 M3 e% m7 j; |. U        IntEnable(C674X_MASK_INT6);
! ^  I/ B3 F) b% W9 E9 {) A8 t8 e- z; l+ Y) a
        IntRegister(C674X_MASK_INT7, USER1KEYIsr);
$ P2 @/ Q4 E  z$ U5 {/ R        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
2 b! }, u! A! o        IntEnable(C674X_MASK_INT7);+ i% V0 y9 y- y) f

5 y$ D) u3 A1 I1 {3 I' O        IntRegister(C674X_MASK_INT8, USER2KEYIsr);  {/ `: W0 J  |( ^' ~% p8 w
        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);' E! {3 i9 @6 q% z7 u. N
        IntEnable(C674X_MASK_INT8);: a8 H- O" M1 q1 y7 [
但是现在收不到中断,请问问题出在那里?谢谢! x# R. r: [1 E5 k3 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
6#
发表于 2015-7-2 10:44:26 | 只看该作者
bit0rain 发表于 2015-7-2 01:24
8 V/ A7 j; _5 {) z' L: N追加一个问题:我先在的中断分配如下:
/ ^$ s2 b  c" t# U7 F4:VPIF
5 ^% T0 r1 j2 m" ]5 j8 b! ~- C5:LCD
( e8 U% E5 ]# ^$ I" T. S0 k
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
5#
 楼主| 发表于 2015-7-2 01:24:40 | 只看该作者
希望缄默 发表于 2015-7-1 19:42
. A9 x' ^/ Q2 ^- ~" R/ q7 j从你贴出来的代码看 应该是没有问题的

9 W2 u$ J: a5 u& M( l2 u4 s; n追加一个问题:我先在的中断分配如下:# q2 e# I4 l) {4 `! _9 f, A9 \
4:VPIF
! ?* ?, H7 T: M# l. y3 o5:LCD
& E' }- L& r. X6:GPIO Bank0
% m1 n. M( b& ^4 E/ N( W7:GPIO Bank6
5 t+ n* u2 B! B: U$ m# o8:GPIO Bank8" K2 T* S0 w* {! v6 X* {( ^
9:timer# P( d( Y. }2 U2 J$ o' Z5 X6 V
发现运行后,要么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
: t, M" n9 P$ i; j. R7 |) y从你贴出来的代码看 应该是没有问题的
* V6 u  n' ], m
还有其他要配置的地方吗?比如pll什么的
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-16 16:10 , Processed in 0.050142 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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