程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> pwm-使用GPIO模擬PWM,實現呼吸燈。

pwm-使用GPIO模擬PWM,實現呼吸燈。

編輯:編程綜合問答
使用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 }

最佳回答:


23行 少了兩句

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved