lddongdong 2021-12-01 00:51 采纳率: 100%
浏览 62
已结题

请问这段嵌入式代码如何修改呢?

问题是:LED+LCD:
初始化设备(4个灯全灭),屏幕刷绿色,然后四个灯全部亮起闪烁三次,结束后屏幕刷成红色。

/*初始化设备(4个灯全灭),屏幕刷绿色,然后四个灯全部亮起闪烁三次,结束后屏幕刷成红色。
*/

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <syslog.h>
#include <errno.h>
#include <linux/input.h>

#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <stdbool.h>

#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
  
#include <string.h> 

#define TEST_MAGIC 'x'                           
#define TEST_MAX_NR 4                            

#define LED1 _IO(TEST_MAGIC, 0)              
#define LED2 _IO(TEST_MAGIC, 1)
#define LED3 _IO(TEST_MAGIC, 2)
#define LED4 _IO(TEST_MAGIC, 3)
#define LED(i) _IO(TEST_MAGIC, i)//做循环用

//控制灯开关
int openorcloseLed();//控制灯全开或全关 ,正常返回1,错误返回-1 
int openorcloseLed(int arg){
    
    int fd;
    fd = open("/dev/Led",O_RDWR);
    if(fd<0)
    {
        printf("打开驱动文件失败,请检查是否有该驱动或者路径是否正确\n");
        return -1;
    }
    for(int i=0;i<4;i++){
        ioctl(fd, LED(i), arg);
    }
    return 1;
}

int pmsx(long a)
{
    int fd=open("/dev/fb0",O_RDWR);
    unsigned char *FB=mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
    //blue point
    long red =a;
    int i,j;
    for(j=0;j<480;j++)
    {
        for(i=0;i<800;i++)
        {
            memcpy(FB+4*i+800*4*j,&red,4);
        }  
    }
        munmap(FB,800*480*4);
        close(fd);
    return 0;
}

//---------------------------------------------------------------------------
int main(int argc, char **argv[])
{
    /*    LED+LCD:
        初始化设备(4个灯全灭),屏幕刷绿色,然后四个灯全部亮起闪烁三次,结束后屏幕刷成红色。
    */    
    
    openorcloseLed(1);//LED全灭
    
//--------------------------------------------------------------------
    
    pmsx(0x0000FF00);      //屏幕刷成绿色

    openorcloseLed(0);
    sleep(1);
    openorcloseLed(1);
    sleep(1);
    openorcloseLed(0);
    sleep(1);
    openorcloseLed(1);
    sleep(1);
    openorcloseLed(0);
    sleep(1);
    openorcloseLed(1);
    sleep(1);
    
    pmsx(0x00FF0000);      //屏幕刷成红色
    return 0; 
}


img


出现这个错误,应该如何修改代码呢?

  • 写回答

2条回答 默认 最新

  • fuill 2021-12-01 02:49
    关注

    那个指针有问题,main里没用到这些指针啊,去掉试试,main括号里什么都不填

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波