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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7562|回复: 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?我现在实现代码如下:
, |( F; ~5 b6 c9 v; Z% \4 V        //kEY GPIO set6 z4 i  r1 k; W7 O# O- g, ^# r- {( I
        GPIOBank0Pin1PinMuxSetup();' S, m; @6 i' c
        GPIOBank0Pin2PinMuxSetup();$ d- `( o6 g* ^9 O
        GPIOBank6Pin8PinMuxSetup();. @4 M  ~* |( {) f/ S
        GPIOBank6Pin9PinMuxSetup();) b" k. f& J6 q: q2 N6 I
        GPIOBank6Pin10PinMuxSetup();
. U- p, I- {6 |4 O) a: U+ t        GPIOBank6Pin11PinMuxSetup();4 @2 X: i! h. n& v; @
        GPIOBank8Pin12PinMuxSetup();
- ~( j2 n) p4 H; t        GPIOBank8Pin14PinMuxSetup();. n# Q  M7 \: T# t7 i5 G$ t$ F
        GPIOBank8Pin15PinMuxSetup();! B. }+ f5 i% Z  V- f4 }/ D; }
5 n( X5 q! M9 }
    GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);, w3 a# A5 I0 _9 k. M
    GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
4 q! J; n5 W' k& c3 w# w    GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
1 [* b3 m9 Z4 Y: T4 ^    GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);% W9 y. I6 Z# q; B8 P3 K
    GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);9 b) f0 t# Z  c
    GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);; I9 a1 u, J- I' O5 h4 R* }
    GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);9 T" w# C2 W6 J, Y" m) c& ^$ ^, V. @' f
    GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);* o0 X2 _& I# b9 ]
    GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);. {2 J( A. ?6 \
( b+ s+ K- N7 \
5 U4 U7 u. @* K5 ?
        // 底板按键中断3 G  v6 V7 A5 L/ |
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none' h- y1 ^' ~7 S% K, c
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
9 z6 [+ f# @1 s% c' u    GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left! q3 p" k$ R/ N( ]1 s+ W' J" l$ E( I# o! j
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
& N5 x1 D9 v* b2 N! h1 s/ U    GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down3 g' ~. O8 ~9 F# l4 m
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
0 e1 d9 X0 U; Q& k    GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up% R! J" }+ ^8 H" i
    GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
7 N& \5 D0 R! Z    GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm7 B, W7 E( [' d+ }2 L. q
; q9 E  b; l. }- ^8 i& i
    // 使能 GPIO BANK 中断
, p2 E1 u9 X) \( E2 O& k    GPIOBankIntEnable(SOC_GPIO_0_REGS, 0);                  //GPIO0
5 a% N1 ~# ?* L- a    GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);                  //GPIO61 [3 X& G; `& B  r. }
    GPIOBankIntEnable(SOC_GPIO_0_REGS, 8);                  //GPIO8
! f: f. B0 S7 Z9 n7 T- t* Y5 B! V8 M1 k
5 j7 A. i8 S1 m& G% h        // 注册中断服务函数# a7 E0 N' h7 ], c$ k
        IntRegister(C674X_MASK_INT6, USER0KEYIsr);' V+ _* N( B& W- V  b! B1 U* \
        IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
: [3 L' m1 A- `' V( ^        IntEnable(C674X_MASK_INT6);* c9 K- Q. L4 C0 U
) i: y% G& c) c8 ?" l
        IntRegister(C674X_MASK_INT7, USER1KEYIsr);) Z; B6 w  ^/ N/ W& G1 F5 e2 B
        IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);6 c* U2 [, K5 H7 f- r6 a( ~2 m
        IntEnable(C674X_MASK_INT7);2 \6 s8 W: b6 f/ F

- s# `5 q5 n# }: d        IntRegister(C674X_MASK_INT8, USER2KEYIsr);
3 n+ `+ Q& X. X* `$ j1 c$ A/ r, u        IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
5 i2 H' Y, J' o+ a* _        IntEnable(C674X_MASK_INT8);
, I- t: }0 t3 B' w但是现在收不到中断,请问问题出在那里?谢谢
" t1 y0 D/ q: ^; j: V4 u+ w
分享到:  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' K9 A8 ^8 P6 f& O/ v
从你贴出来的代码看 应该是没有问题的

- L& z$ g9 L; V/ [( S0 L还有其他要配置的地方吗?比如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:427 n! S1 T" f( P& X0 P$ q8 e" I
从你贴出来的代码看 应该是没有问题的

# `( s1 }8 |+ m' W' B追加一个问题:我先在的中断分配如下:0 a" O5 t: L, \: }+ r
4:VPIF! v) X' r& h5 [
5:LCD+ W4 l% ]5 W* M( h5 e) \
6:GPIO Bank0% w" J5 ]/ \6 i: W3 z
7:GPIO Bank6
8 v* p4 l6 Q( ]6 ?" X, S8:GPIO Bank8
; F# Z/ K8 e# q9:timer
2 p" [7 b( M% v! K) T发现运行后,要么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' V0 e/ W6 i# C8 t  K* L( D
追加一个问题:我先在的中断分配如下:' _8 Y* V" {; E( D  X( k; C
4:VPIF
. M, k3 A) l1 D3 w- b& n# A5:LCD
4 c2 g) o* E( }: X4 b6 ^# \! `
不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是不是执行时间太长了
回复 支持 反对

使用道具 举报

10

主题

33

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
7#
 楼主| 发表于 2015-7-3 12:31:12 | 只看该作者
希望缄默 发表于 2015-7-2 10:44
! m* s$ i; Z0 t" @2 \5 `不使用操作系统可屏蔽中断不能嵌套 当前中断服务函数执行时其它中断是不能响应的 检查下你的 ISR 函数是 ...

+ Q4 o& P5 u7 X3 M恩,找到问题了,调试的时候把GPIO和VPIF的中断号设置成一样的了,而且没有设置combine,修改了以后,就好了,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 01:59 , Processed in 0.046024 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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