qq_21831417 2015-10-21 09:51 采纳率: 30.8%
浏览 10760
已采纳

使用GPIO模拟PWM,实现呼吸灯。

各位大神好,我使用的板子是MT7620A,里面没有PWM功能,从而使用GPIO控制LED,使用延时的方法模拟PWM功效,实现呼吸灯的功能。可是。。。几番调试,这个LED依然呼吸不正常。 遂来请教各位, 是不是 在下思路上误入歧途了,有没有大神解救一下的。程序如下:
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9
10
11 int main()
12 {
13 int fd;
14 int result = 0;
15 int i,j;
16 int delay = 100;
17

18 if ((fd = open("/dev/gpio", O_RDWR)) < 0)
19 {
20 printf("Error whilst opening /dev/gpio\n");
21 return -1;
22 }

23

24 ioctl(fd, GPIO_DIR_OUT, 2);//设置GPIO2为输出
25 ioctl(fd, GPIO_SET, 2); //GPIO2 灭.
26 while(1)
27 {
28 for( i = 0; i <= delay; i++)
29 {
30 ioctl(fd, GPIO_SET, 1);
31 ioctl(fd, GPIO_SET, 2);
32 usleep(i);
33 ioctl(fd, GPIO_CLEAR, 1);
34 ioctl(fd, GPIO_CLEAR, 2);
35 usleep(delay-i);
36 printf("up:%d\n",i);
37 }

38

39 ioctl(fd, GPIO_CLEAR, 1);
40 ioctl(fd, GPIO_CLEAR, 2);
41 usleep(100000);

42 for(j = delay; j >= 0; j--)
43 {
44 printf("down:%d\n",j);
45 ioctl(fd, GPIO_CLEAR, 1);
46 ioctl(fd, GPIO_CLEAR, 2);
47 usleep(j);
48 ioctl(fd, GPIO_SET, 1);

ioctl(fd, GPIO_CLEAR, 2);
47 usleep(j);
48 ioctl(fd, GPIO_SET, 1);
49 ioctl(fd, GPIO_SET, 2);
50 usleep(delay-j);
51
52 }
53 }
54
55 return result;
56 }

  • 写回答

2条回答 默认 最新

  • qq_21831417 2015-10-21 09:53
    关注

    23行 少了两句

    25 ioctl(fd, GPIO_DIR_OUT, 1);
    26 ioctl(fd, GPIO_SET, 1);

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

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝