S3C2440驱动开发(五)

裸机程序开发之按键程序

在开发板中实现按键检测有2种方式,一种是轮询,另一种是中断,本章节将介绍中断方式。

CPU中的中断控制器可接收60种中断源,提供中断源的外设有:DMA控制器,UART,IIC,EINTn。本章节使用的中断是EINTn。以下是源码:

1       #include "def.h"

2       #include "option.h"

3       #include "2440addr.h"    

4       #include "2440lib.h"

5       #include "2440slib.h"

6       #include "mmu.h"

7      

8       void Delay(int time);

9       void Isr_Init(void);

10     void HaltUndef(void);

11     void HaltSwi(void);

12     void HaltPabort(void);

13     void HaltDabort(void);

14     U8 Key_Scan(void);

15     void __irq Key_ISR(void);

16     void KeyTest(void);

17    

18     void Delay(int time)

19     {

20              U32 val = (PCLK>>3)/1000-1;

21    

22              rTCFG0 &= ~(0xff<<8);

23              rTCFG0 |= 3<<8;                         //prescaler = 3+1

24              rTCFG1 &= ~(0xf<<12);

25              rTCFG1 |= 0<<12;             //mux = 1/2

26              rTCNTB3 = val;

27              rTCMPB3 = val>>1;           // 50%

28              rTCON &= ~(0xf<<16);

29              rTCON |= 0xb<<16;          //interval, inv-off, update TCNTB3&TCMPB3, start timer 3

30              rTCON &= ~(2<<16);                  //clear manual update bit

31              while(time--) {

32                        while(rTCNTO3>=val>>1);

33                        while(rTCNTO3<val>>1);

33              };

34     }

35    

36     U8 Key_Scan( void )

37     {

38              Delay( 80 ) ;

39              if( (rGPGDAT&(1<< 0)) == 0 )

40                        return 1 ;

41              else if( (rGPGDAT&(1<< 3)) == 0 )

42                        return 2;

43              else if( (rGPGDAT&(1<< 5)) == 0 )

44                        return 3 ;

45              else if( (rGPGDAT&(1<< 6)) == 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值