首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

(求助)MPC8315erdb GPIO 设置问题

(求助)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);
“通过CodeWarrior却可以“,是说在调试的时候修改寄存器值吗?
海纳百川  有容乃大
是啊
问题解决了
是由于GPIO管脚复用的问题。
返回列表