在线时间0 小时
UID181459
注册时间2010-4-13
NXP金币0
该用户从未签到
新手上路

- 积分
- 46
- 最后登录
- 1970-1-1
|
我想将GPIO的30口设置成输出,且输出高电平,但我通过模块化编程没能实现,而通过CodeWarrior却可以。
其中GPIODAT的值无法修改,不知是何原因,请高手指点。
以下是我的程序。
#include
#include
MODULE_LICENSE ("Dual BSD/GPL");
void gpio_init()
{
int i=0;
unsigned long* gpdir=ioremap(0xe0000c00,4);
unsigned long* gpodr=ioremap(0xe0000c04,4);
unsigned long* gpdata=ioremap(0xe0000c08,4);
unsigned long* gpier=ioremap(0xe0000c0c,4);
unsigned long* gpimr=ioremap(0xe0000c10,4);
unsigned long* gpicr=ioremap(0xe0000c14,4);
printk("gpio_direct:%x\n",*gpdir);
printk("gpio_odr:%x\n",*gpodr);
printk("gpio_data:%x\n",*gpdata);
printk("gpio_gpier:%x\n",*gpier);
printk("gpio_gpimr:%x\n",*gpimr);
printk("gpio_gpicr:%x\n",*gpicr);
*gpdir=0xffffffff;
*gpodr=0x00000000;
*gpdata=0x89abcdef;
printk("gpio_data:%x\n",*gpdata);
*gpier=0x00000000;
*gpimr=0x00000000;
*gpicr=0x00000000;
printk("gpio_direct:%x\n",*gpdir);
printk("gpio_odr:%x\n",*gpodr);
printk("gpio_data:%x\n",*gpdata);
printk("gpio_gpier:%x\n",*gpier);
printk("gpio_gpimr:%x\n",*gpimr);
printk("gpio_gpicr:%x\n",*gpicr);
iounmap(gpdir);
}
typedef unsigned char uchar;
static int lbc_init(void)
{
printk("Hello,world\n");
gpio_init();
return 0;
}
static void lbc_exit(void)
{
printk(KERN_ALERT"Goodbye,cruel world\n");
}
module_init(lbc_init);
module_exit(lbc_exit);
|
|