码迷,mamicode.com
首页 > 其他好文 > 详细

阶段小项目1:循环间隔1秒lcd显示红绿蓝

时间:2016-02-14 19:44:25      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<error.h>
#include<errno.h>
#include<unistd.h>
#include<strings.h>
#include<stdbool.h>

#include<sys/stat.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<fcntl.h>
#include<sys/mman.h>
int main(int argc,char **argv)
{
int fd = open("/dev/fb0",O_RDWR);
if(fd == -1)
{
fprintf(stderr,"open (%s) failed: %s" ,"/dev/fb0",strerror(errno));
exit(0);
}

char *p = mmap(NULL,800*480*4,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);
if(p == MAP_FAILED)
{
perror("mmap failed!");
exit(0);
}

unsigned long buff[3] = {0x000000ff,0x00ff0000,0x0000ff00};
int i,j = 0;
for(j;;j++)  //主要变量j的使用,如果只有i循环,而没有j,则会出现雪花点,
{

for(i=0;i<800*480;i++)
{
memcpy(p+i*4,&buff[j%3],4);//此处少了求余,会出现段错误,内存溢出。
}

sleep(1);
}

return 0;
}

阶段小项目1:循环间隔1秒lcd显示红绿蓝

标签:

原文地址:http://www.cnblogs.com/defen/p/5189481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!