OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3585|回复: 1

linux framerbuffer测试程序,画一条斜线。适用于480*272的屏幕。

[复制链接]

17

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
479
金钱
479
注册时间
2016-1-20
在线时间
48 小时
发表于 2020-6-28 16:38:13 来自手机 | 显示全部楼层 |阅读模式
#include "stdio.h"
#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"
#include "sys/mman.h"
#include "linux/fb.h"

#define WIDTH 480
#define HEIGHT 272
#define BYTE_PER_PIXEL 2
#define FB_DEVICE "/dev/fb0"
static unsigned char *fb_mem=NULL;

int init_framebuffer(void)
{
        int fb;
        struct fb_var_screeninfo vinfo;       

        fb=open(FB_DEVICE,O_RDWR);
        ioctl(fb,FBIOGET_VSCREENINFO,&vinfo);
        printf("x %d y %d bpp %d\r\n",vinfo.xres,vinfo.yres,vinfo.bits_per_pixel);
        if(fb<0)
        {
        printf("cannot open frame buffer device\r\n");
        }
        else
        {
        printf("openning frame buffer succeeded\r\n");
        }
        fb_mem=mmap(NULL,WIDTH*HEIGHT*BYTE_PER_PIXEL,PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
        if(fb_mem>0)
        {
                printf("map framebuffer succeeded\r\n");
        }
        memset(fb_mem,0,WIDTH*HEIGHT*BYTE_PER_PIXEL);
}

void putPixel(unsigned int x,unsigned int y,unsigned int color)
{
        unsigned long offset;
        if(x>=WIDTH)
        {
        x=WIDTH-1;
        }
        if(y>=HEIGHT)
        {
        y=WIDTH-1;
        }
        offset=(y*WIDTH*BYTE_PER_PIXEL)+(x*BYTE_PER_PIXEL);
        *(unsigned short *)(fb_mem+offset)=color;
}

void main()
{
        int i;
       
        init_framebuffer();
        for(i=0;i<100;i++)
        {
        putPixel(i,i,0xff00);
        }
        while(1)
        {
        }
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-6-29 08:50:53 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表