资源简介
我用的是256M的mini2440,这是不使用中断的裸机程序,完成功能是按下四个按键对应的4个led灯亮,
代码片段和文件信息
/*
*按键所对应的的GPIO,K1->GPG0K2->GPG3K3->GPG5K4->GPG6K5->GPG7K6->GPG11
*函数功能:通过按键扫描函数Key_Scan()判断出是哪一个键被按下
*注意这里将6个按键对应的IO口都设置为输入功能,如果只使用几个按键的时候要注意修改
*/
#include“s3c2440addr.h“
#include“key.h“
#define KEY1_C (3<<0)
#define KEY2_C (3<<6)
#define KEY3_C (3<<10)
#define KEY4_C (3<<12)
#define KEY5_C (3<<14)
#define KEY6_C (3<<22)
#define KEY1 (3<<0)
#define KEY2 (3<<6)
#define KEY3 (3<<10)
#define KEY4 (3<<12)
#define KEY5 (3<<14)
#define KEY6 (3<<22)
void Key_Init(void)
{
GPGCON&=~(KEY1_C|KEY2_C|KEY3_C|KEY4_C|KEY5_C|KEY6_C);
GPGCON|=KEY1|KEY2|KEY3|KEY4|KEY5|KEY6;
GPGUP&=~((1<<0)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<<11));
GPGDAT|=(1<<0)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<<11);
}
int Key_Scan(void)
{
int keynum=0;
GPGDAT=0xfff;
if((GPGDAT&(1<<0))==0)
{
keynum=1;
}
if((GPGDAT&(1<<3))==0)
{
keynum=2;
}
if((GPGDAT&(1<<5))==0)
{
keynum=3;
}
if((GPGDAT&(1<<6))==0)
{
keynum=4;
}
if((GPGDAT&(1<<7))==0)
{
keynum=5;
}
if((GPGDAT&(1<<11))==0)
{
keynum=6;
}
return keynum;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 919 2013-04-12 14:58 head.S
文件 1157 2013-04-12 20:18 key.c
文件 147 2013-04-12 18:56 key.h
文件 329 2013-04-12 18:46 led.c
文件 422 2013-04-12 19:07 led.h
文件 737 2013-04-12 20:06 main.c
文件 403 2013-04-12 19:01 Makefile
文件 9071 2013-04-12 16:51 s3c2440addr.h
----------- --------- ---------- ----- ----
13185 8
评论
共有 条评论