|
本帖最后由 @allen 于 2013-8-24 16:13 编辑
cubieboard 上引出一路PWM在PB2 (PWM0)
但我们可以用GPIO模拟出PWM使用
代码是 http://cn.cubieboard.org/forum.p ... =464&highlight=GPIO 的写GPIO控制灯的闪烁那段,我整理下成我需要的PWM输出。我改成PD1,方便找到管脚。代码是简单延时,给高给底电平。比较重要的是gpio_lib.c,gpio_lib.h。见附件。
源代码gpio.c:- #include <stdlib.h>
- #include <stdio.h>
- #include "gpio_lib.h"
- #define PD0 SUNXI_GPD(0)
- #define PD1 SUNXI_GPD(1)
- #define PD2 SUNXI_GPD(2)
- #define PD3 SUNXI_GPD(3)
- #define PD4 SUNXI_GPD(4)
- #define PD5 SUNXI_GPD(5)
- #define PD6 SUNXI_GPD(6)
- #define PD7 SUNXI_GPD(7)
- #define PD8 SUNXI_GPD(8)
- #define PD9 SUNXI_GPD(9)
- #define PD10 SUNXI_GPD(10)
- #define PD11 SUNXI_GPD(11)
- #define PD12 SUNXI_GPD(12)
- #define PD13 SUNXI_GPD(13)
- #define PD14 SUNXI_GPD(14)
- #define PD15 SUNXI_GPD(15)
- #define PD16 SUNXI_GPD(16)
- #define PD17 SUNXI_GPD(17)
- #define PD18 SUNXI_GPD(18)
- #define PD19 SUNXI_GPD(19)
- #define PD20 SUNXI_GPD(20)
- #define PD21 SUNXI_GPD(21)
- #define PD22 SUNXI_GPD(22)
- #define PD23 SUNXI_GPD(23)
- #define PD24 SUNXI_GPD(24)
- #define PD25 SUNXI_GPD(25)
- #define PD26 SUNXI_GPD(26)
- #define PD27 SUNXI_GPD(27)
- #define MISO SUNXI_GPE(3)
- #define MOSI SUNXI_GPE(2)
- #define SCK SUNXI_GPE(1)
- #define CS SUNXI_GPE(0)
- int main()
- {
- if(SETUP_OK!=sunxi_gpio_init()){
- printf("Failed to initialize GPIO\n");
- return -1;
- }
- if(SETUP_OK!=sunxi_gpio_set_cfgpin(PD1,OUTPUT)){
- printf("Failed to config GPIO pin\n");
- return -1;
- }
- int i,j;
- while(1) {
- if(sunxi_gpio_output(PD1,HIGH)){
- printf("Failed to set GPIO pin value\n");
- return -1;
- }
- usleep(50000);
- if(sunxi_gpio_output(PD1,LOW)){
- printf("Failed to set GPIO pin value\n");
- return -1;
- }
- usleep(50000);
-
- }
- sunxi_gpio_cleanup();
- return 0;
-
- }
复制代码 主要是修改两个usleep()里面的值;比如:
高电平5000000us,底电平500000us,等于说频率是1HZ,占空比为1/2,用示波器可以看到波形,量输出管脚的电压是3.3X1/2=1.65 左右。
高电平400us,底电平600us,等于说频率是1KHZ,占空比为2/5,电压1.32左右。
依据自己需要修改。
修改后的gcc生成执行文件,执行就可以了。记得sudo apt-get install gcc 和sudo apt-get install build-essential。- gcc gpio_lib.c -c
- gcc gpio.c -c
- gcc gpio.o gpio_lib.o -o gpio
- ./gpio
复制代码 附件中有一个写好的shel,修改延时参数后,./gpig_shell 可以直接执行,不用每次输入以上命令。
新手玩cubieboard,望各位指导!
|
|