您的位置:首页 > 其它

u-boot下运行key简单测试测程序

2013-08-12 00:32 393 查看
硬件平台:友善之臂mini2440

u-boot:2010.03

交叉工具链:arm-linux-gcc 4.3.2

led1 led2 led3 led4

GPB5 GPB6 GPB7 GPB8

key1 key2 key3 key4 key5 key6

GPG0 GPG3 GPG5 GPG6 GPG7 GPG11

code:main.c

#include "led.h"

#include "key.h"

int main(void)

{

int count = 0;

show("hello.world!\n");

led_x_init(LED2);

led_x_init(LED1);

led_x_init(LED4);

led_x_init(LED3);

key_x_init(KEY6);

key_x_init(KEY5);

key_x_init(KEY4);

key_x_init(KEY3);

key_x_init(KEY2);

key_x_init(KEY1);

while(1)

{

if (!get_x_key(KEY1))

{

led_x_on(LED1);

}

else

led_x_off(LED1);

if (!get_x_key(KEY5))

{

led_x_on(LED1);

led_x_on(LED2);

led_x_on(LED3);

led_x_on(LED4);

}

else

{

led_x_off(LED1);

led_x_off(LED2);

led_x_off(LED3);

led_x_off(LED4);

}

if (!get_x_key(KEY2))

{

led_x_on(LED2);

}

else

led_x_off(LED2);

if (!get_x_key(KEY3))

{

led_x_on(LED3);

}

else

led_x_off(LED3);

if (!get_x_key(KEY4))

{

led_x_on(LED4);

}

else

led_x_off(LED4);

if (!get_x_key(KEY6))

break;

}

led_x_off(LED1);

led_x_off(LED2);

led_x_off(LED3);

led_x_off(LED4);

show("hello.linux!\n");

return 0;

}

key.h

#ifndef __KEY_H__

#define __KEY_H__

#include "mini2440addr.h"

#define KEY1 0x0

#define KEY2 0x3

#define KEY3 0x5

#define KEY4 0x6

#define KEY5 0x7

#define KEY6 0x11

#define GPG_OUT 0x1

#define GPG_IN 0x0

#define key_x_init(n) {rGPGCON &= ~(0x11<<((n)*2));rGPGCON |= (GPG_OUT<<((n)*2));rGPGUP &= 1<<((n)*2);}

#define get_x_key(n) (rGPGDAT & (1<<(n)))

#endif /*__KEY_H__*/

调试记录:按键初始化不存在led初始化那样有顺序要求,顺序跟倒序都可以顺利初始化按键!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: