第三十四天:Tiny4412驱动开发之按键驱动与蜂鸣器驱动

编写按键驱动的过程和编写LED灯的驱动类似。区别在于按键是在底板上的。要从底板的电路图开始看。

   使用key为关键字查找电路图:

  第三十四天:Tiny4412驱动开发之按键驱动与蜂鸣器驱动_第1张图片

 可以得知的信息:按键松开时候XEINT26为高电平。按下时候为低电平。所以要判断按键是否被按下,就要检测XEINT26的状态。

 使用XEINT26为关键字,在核心板上查看其定义。找到下图:

 第三十四天:Tiny4412驱动开发之按键驱动与蜂鸣器驱动_第2张图片  

  XEINT26在核心板上链接到GPX3_2上。然后就是去datasheet中查找GPX3_2的说明了。

  第三十四天:Tiny4412驱动开发之按键驱动与蜂鸣器驱动_第3张图片

 第三十四天:Tiny4412驱动开发之按键驱动与蜂鸣器驱动_第4张图片

   按键为检测,GPX3CON置0,GPX3DAT置1,表示按键被按下。代码如下:

 1 int (*show)(char *,...) = 0xc3e114d8;
 2 int (*udelay)(int) = 0xc3e25f90;
 3 void key(void)
 4 {
 5     unsigned long *GPX3CON = 0x11000c60;
 6     unsigned long *GPX3DAT = 0x11000c64;
 7 
 8     *GPX3CON = 0x0;    
 9     while(1){
10         if((*GPX3DAT & 0x04) == 0x0){
11             show("good moring\n");
12             udelay(1000000);
13         }
14         if((*GPX3DAT & 0x08) == 0x0){
15             show("hello world\n");
16             udelay(1000000);
17         }
18         if((*GPX3DAT & 0x10) == 0x0){
19             show("hello bunfly\n");
20             udelay(1000000);
21         }
22         if((*GPX3DAT & 0x20) == 0x0){
23             break;
24         }
25     
26     }
27 }

 

  代码的功能是按KEY1,KEY2,KEY3输出字符串,KEY4退出。

 蜂鸣器的驱动代码编写步骤类似,我这里就不描述具体过程了。直接贴代码:

 1 void (*udelay)(int) = 0xc3e25f90;
 2 void  abc(void)
 3 {
 4     volatile unsigned long  *GPD0CON  = 0x114000a0;
 5     volatile unsigned long  *GPD0DAT  = 0x114000a4;
 6     
 7     *GPD0CON =  0x0001;
 8 #if 1
 9     while(1){
10         *GPD0DAT = 0x1;// on
11         udelay(250000);
12         *GPD0DAT = 0x0;
13         udelay(250000);//off
14     }
15 #endif
16     
17 }

 没有对其它控制的位进行保护。差评!

    

你可能感兴趣的:(Linux)