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

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

问题是: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日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!