LInux_LCD_APP

LInux_LCD_APP

 
 
 
复制代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <string.h>

struct fb_var_screeninfo var;  //可变参数
struct fb_fix_screeninfo fix;  //固定参数
unsigned char *fb_mem=NULL;    //LCD屏的首地址

int main(int argc,char **argv)
{
        int fd=open("/dev/fb0",O_RDWR);
        if(fd<0)
        {
                perror("设备文件打开失败");
                return 0;
        }

        /*1. 获取LCD屏的可变形参*/
        ioctl(fd,FBIOGET_VSCREENINFO,&var);
        printf("分辨率:%d*%d\n",var.xres,var.yres);
        printf("像素点位数:%d\n",var.bits_per_pixel);

        /*2. 获取LCD屏的固定形参*/
        ioctl(fd,FBIOGET_FSCREENINFO,&fix);
        printf("映射的长度:%d\n",fix.smem_len);
        printf("一行的字节数:%d\n",fix.line_length);

        /*3. 映射LCD缓冲区地址到进程空间*/
        fb_mem=mmap(NULL,fix.smem_len,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
        if(fb_mem==NULL)
        {
                perror("空间映射失败!\n");
                return 0;
        }

     
     //清零 memset(fb_mem,
0x00000000,fix.smem_len); // /*4. 控制显示屏*/ // memset(fb_mem,0x00FFFFFF,fix.smem_len); //将屏幕清屏为白色 memset(fb_mem,0x000000ff,fix.smem_len); //将屏幕清屏为蓝色 munmap(fb_mem,fix.smem_len); close(fd); return 0; }





复制代码

 

 
 
 
Makefile:
CROSS_COMPILE = /opt/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
CC            = $(CROSS_COMPILE)gcc 
myapp    = lcd.c
MYAPP    = lcd

all:
    $(CC) $(myapp) -o $(MYAPP)

 

 
 
 
 
 
 
 
 
笔记:

1.
 
 
 
 
 
 
 
posted @   panda_w  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示