漫威专卖店:linux下使用mmap控制GPIO
来源:百度文库 编辑:中财网 时间:2024/04/29 17:36:29
2008-07-12 7:41
欢迎看看我的另一个小窝,说不定有意外的惊喜哦 ^_^ www.devres.info
如果没有/dev/mem,则执行
mknod /dev/mem c 1 1
编译下面的代码
#include
#include
#include
#include
#include
#include
#define GPIO_CTL_BASE 0x56000000
#define rGPBCON 0x10
#define rGPBDAT 0x14
#define rGPBUP 0x18
unsigned int *GPBCON,*GPBDAT,*GPBUP;
void Led_Display(int data)
{
*(volatile unsigned int *)GPBDAT= (~data & 0xf)<<7;//因为是第7-10位,且只有4位,故 左移7
}
int main(int argc, char** argv)
{
int gpio_fd, ip=0, i=0;
unsigned char *gpio_map;
gpio_map = NULL;
GPBCON = NULL;
GPBDAT = NULL;
GPBUP = NULL;
gpio_fd =open("/dev/mem",O_RDWR);
if (gpio_fd == -1)
{
printf("can't open /dev/mem.\n");
return ;
}
gpio_map = (unsigned char *)mmap(0, 0xbc,PROT_READ | PROT_WRITE, MAP_SHARED,gpio_fd, GPIO_CTL_BASE);
GPBCON = (volatile unsigned int *) (gpio_map+rGPBCON);
GPBDAT = (volatile unsigned int *) (gpio_map+rGPBDAT);
GPBUP = (volatile unsigned int *) (gpio_map+rGPBUP);
//初始化io
*(volatile unsigned int *)GPBCON=0x154000;
*(volatile unsigned int *)GPBUP=0x7ff;
for(i=0;i<16;i++)
{
Led_Display(i);
sleep(1);
}
munmap(0, 0xbc);
if (gpio_fd != 0x0)
{
close(gpio_fd);
}
printf("GPIO Control Test end\n");
}
欢迎看看我的另一个小窝,说不定有意外的惊喜哦 ^_^ www.devres.info
如果没有/dev/mem,则执行
mknod /dev/mem c 1 1
编译下面的代码
#include
#include
#include
#include
#include
#include
#define GPIO_CTL_BASE 0x56000000
#define rGPBCON 0x10
#define rGPBDAT 0x14
#define rGPBUP 0x18
unsigned int *GPBCON,*GPBDAT,*GPBUP;
void Led_Display(int data)
{
*(volatile unsigned int *)GPBDAT= (~data & 0xf)<<7;//因为是第7-10位,且只有4位,故 左移7
}
int main(int argc, char** argv)
{
int gpio_fd, ip=0, i=0;
unsigned char *gpio_map;
gpio_map = NULL;
GPBCON = NULL;
GPBDAT = NULL;
GPBUP = NULL;
gpio_fd =open("/dev/mem",O_RDWR);
if (gpio_fd == -1)
{
printf("can't open /dev/mem.\n");
return ;
}
gpio_map = (unsigned char *)mmap(0, 0xbc,PROT_READ | PROT_WRITE, MAP_SHARED,gpio_fd, GPIO_CTL_BASE);
GPBCON = (volatile unsigned int *) (gpio_map+rGPBCON);
GPBDAT = (volatile unsigned int *) (gpio_map+rGPBDAT);
GPBUP = (volatile unsigned int *) (gpio_map+rGPBUP);
//初始化io
*(volatile unsigned int *)GPBCON=0x154000;
*(volatile unsigned int *)GPBUP=0x7ff;
for(i=0;i<16;i++)
{
Led_Display(i);
sleep(1);
}
munmap(0, 0xbc);
if (gpio_fd != 0x0)
{
close(gpio_fd);
}
printf("GPIO Control Test end\n");
}
linux下的mrtg使用
linux下使用LVDS液晶显示器
在linux下可以使用qq吗?
请问linux下如何使用gcc
linux下使用USB键盘有问题
在linux下如何使用中文输入法
如何在LINUX下使用U盘
如何在LINUX下安装使用QQ
linux下可以使用BT和电驴吗
linux下使用u盘为何打不开..
linux下如何使用U盘
求援!! linux 下摄像头的使用
linux 下如何使用 xen 虚拟 windows
gpio是什么意思
linux 下用c如何控制进程调度
请问能不能在linux下使用windows下的硬盘????
WinXP系统下音量控制无法使用
linux下如何使用u盘啊?谢谢^_^
linux下查看那些端口正在使用的命令是什么?
如何把文本文档中的文件在linux下使用
在linux下可以使用的web服务器有哪些?
linux下使用Qt时,启动Qt没有新建工程
qq 怎么弄才能在linux系统下正常使用
为什么笔记本电脑在linux下触摸板无法正常使用