(求助)MPC8315erdb GPIO 设置问题
- UID
- 801378
|
(求助)MPC8315erdb GPIO 设置问题
我想将GPIO的30口设置成输出,且输出高电平,但我通过模块化编程没能实现,而通过CodeWarrior却可以。
其中GPIODAT的值无法修改,不知是何原因,请高手指点。
以下是我的程序。
#include <asm/types.h>
#include <asm/io.h>
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); |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
“通过CodeWarrior却可以“,是说在调试的时候修改寄存器值吗? |
|
|
|
|
|
- UID
- 801378
|
|
|
|
|
|