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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6541|回复: 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?我现在实现代码如下:
0 }  E$ S! B) K% m$ H        //kEY GPIO set
* T5 ?# a+ b  R( H        GPIOBank0Pin1PinMuxSetup();  M" ?! _4 @: P6 `
        GPIOBank0Pin2PinMuxSetup();
7 R% V% u& i: I8 o- d, z, B7 n        GPIOBank6Pin8PinMuxSetup();% b" K  S$ @; M5 X8 ?0 ?. z
        GPIOBank6Pin9PinMuxSetup();
7 D; B7 v5 h6 {  _2 V        GPIOBank6Pin10PinMuxSetup();/ O- C$ T! N$ w" C& R* x* Y" J" {
        GPIOBank6Pin11PinMuxSetup();
& |$ i" R9 r6 r( u        GPIOBank8Pin12PinMuxSetup();5 B( Q3 q/ v$ |8 r: g& k! c0 O
        GPIOBank8Pin14PinMuxSetup();* `5 q" P1 C# C0 a
        GPIOBank8Pin15PinMuxSetup();' @$ l$ {' f; }# {+ I2 v7 P5 {  \

" c  o* m) j+ Q1 b    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
2 Y, \; g; j9 l/ X    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
; |! p! F# }. |    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);' L; V& p, d; ]- L. t! v
    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);9 Y2 m; Q" e4 `, A& a
    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);* f% Z/ n2 b9 p- Y' a( j; ?
    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);3 g4 s) R  A0 t) e. y$ M
    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
  [4 T! H* ]6 e' y# p  A3 Z    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);- V9 D" B, ~: [/ ]/ B- f- S
    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
: i/ t: |/ @  s8 ~( S& i, V6 b- U2 E0 b* I$ V& f' B- @# h

' A) ~0 W' t- e* G* C, B        // 底板按键中断: ^( \+ O8 Z; F& j  a+ w0 Y
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none0 m# e0 O+ C' T: L* ]
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none4 q, L) O* U  {* Q- c! J
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
; v' n; y7 F0 _) p0 _    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok1 d/ I) u+ e$ m. Q. k& j
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
0 L1 K+ o( t: c2 B    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right  r% x% B1 W. m
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up- b0 F4 s: S$ Z2 f9 L1 O- n3 Y- j
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
7 p% ~7 H8 O% p9 n) q# [4 q    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm& n+ |6 F9 f- n" v! d' V
7 M1 S! I. `0 v' X
    // 使能 GPIO BANK 中断
. u* T( A2 T+ t: ?2 n' Q    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0
' t7 H2 c" l' [1 e# f0 V5 T    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO6' v8 ?1 ^9 Y% K# Y2 V: F
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8
3 ~% g# b- H6 t# n' x  u  X7 {0 ~! B! T
        // 注册中断服务函数. ?# o2 C, K, v* @* y+ D6 `
        IntRegister(C674X_MASK_INT6, USER0KEYIsr);
; c+ }7 W) f9 V' w4 g9 ?        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);* C; t0 h6 Z  ~" R: I( q. ~
        IntEnable(C674X_MASK_INT6);$ d6 y8 c  ~5 A! `2 }/ z
; W6 U1 y) N. [0 b/ q4 y1 C2 L
        IntRegister(C674X_MASK_INT7, USER1KEYIsr);' U) u3 @6 b/ Y1 x6 ~
        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);# o- D* k) }2 I- b
        IntEnable(C674X_MASK_INT7);! j1 _; Z6 s% n* s) h) u, c

. |/ B/ S; y1 ^        IntRegister(C674X_MASK_INT8, USER2KEYIsr);
) |: |* X. n. W8 m6 E        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
3 }# v. E  `( n7 w% ]( M3 W/ o        IntEnable(C674X_MASK_INT8);
) z/ A. A5 b9 b7 m' E- H, S但是现在收不到中断,请问问题出在那里?谢谢
5 D+ C% e; {+ w$ n$ U$ H% D
分享到:  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
  p) z: [9 L  c: j$ `从你贴出来的代码看 应该是没有问题的

3 I) s4 k+ V& ]# a8 Z9 X, D还有其他要配置的地方吗?比如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! n0 n2 s+ H7 v, ?; r: ]从你贴出来的代码看 应该是没有问题的
; y* m% t% L% N/ s6 V8 x6 |; |
追加一个问题:我先在的中断分配如下:
+ w: A1 O" E& R5 L, N4:VPIF
0 T5 X2 r8 q5 ~' B" E2 p  h5:LCD
! E: F8 U6 W- w- P4 }% k6:GPIO Bank0) U. \  w1 m" T$ a1 ~1 U
7:GPIO Bank6. H, D9 [7 l8 ]- p
8:GPIO Bank8' v# M& L  m7 y$ @( ]+ h
9:timer
" ^( u! I" T4 P% Q7 G发现运行后,要么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:24
" X+ E+ Z, D2 v" y' M追加一个问题:我先在的中断分配如下:
7 Y) i: ^4 O3 G) N2 I$ }$ w4:VPIF) h+ w& ?) b) |7 |
5:LCD

3 L4 Q1 T2 x' p9 l" N不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:446 ?6 r  k$ \. K2 d: m, y+ e
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...
1 x/ D% a) `1 F8 U6 K1 N
恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 20:03 , Processed in 0.050220 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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