14 个解决方案
#1
采用PWM控制输出波形或者使用GPIO模拟PWM产生对应的波形
#2
GPIO模拟 +1
#3
PWM 就可以了。不能用GPIO模拟啊,不准的。
#4
谁告诉你GPIO不准的,那要看你代码怎么控制,一般的PWM都可以用GPIO来模拟
#5
你用定时器+GPIO 才行
这样就准。
是我没说全。
#6
自己写一个pwm或者I/O模拟pwm的驱动程序。编译到系统里面。
应用程序调用驱动程序的接口函数IoControl,操作硬件.
应用程序调用驱动程序的接口函数IoControl,操作硬件.
#7
+1
#8
我用的是GPIO来输出,已经可以输出脉冲了!
如果要加定时器的话,怎样加?能否具体说明一下?
如果要加定时器的话,怎样加?能否具体说明一下?
#9
GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。
#10
低电平->高电平->延时->低电平
#11
高低电平的设置是通过 WriteFile 还是 DeviceIoControl函数,我现在用 WriteFile 也按照你说的这个方法来设置了,但是始终无法出现
#12
两种方式都可以,你没有设置成功,原因有可能是其他地方用到了这个GPIO,导致你设置不成功,你检查下试试!
#13
你是想在驱动层控制,还是应用层控制?
(1)驱动层控制:
直接再启动的时候加注册表buildin里面。然后再init函数里面写一个线程,在这个线程里面处理输出波形。可以用gpio模拟波形。不过中间的延迟部分,尽量用timer来控制。否则多线程的操作系统软件延迟会出现偏差。
(2)应用层控制:
vs直接写代码就可以。不需要弄个驱动,再调用这个驱动。需要操作哪个寄存器。直接映射到你写的应用程序的进程内存中,然后进行操作。具体流程和驱动层控制一样。当然你非要写个流驱动,然后写个exe去ioctl,也同样可以实现。
代码写起来:
while(1){
gpio_ctl(HIGH);
Timer_delay(DELAY_TIME);
gpio_ctl(LOW);
Timer_delay(DELAY_TIME);
}
(1)驱动层控制:
直接再启动的时候加注册表buildin里面。然后再init函数里面写一个线程,在这个线程里面处理输出波形。可以用gpio模拟波形。不过中间的延迟部分,尽量用timer来控制。否则多线程的操作系统软件延迟会出现偏差。
(2)应用层控制:
vs直接写代码就可以。不需要弄个驱动,再调用这个驱动。需要操作哪个寄存器。直接映射到你写的应用程序的进程内存中,然后进行操作。具体流程和驱动层控制一样。当然你非要写个流驱动,然后写个exe去ioctl,也同样可以实现。
代码写起来:
while(1){
gpio_ctl(HIGH);
Timer_delay(DELAY_TIME);
gpio_ctl(LOW);
Timer_delay(DELAY_TIME);
}
#14
wince6.0能够通过应用程直接操作寄存器吗?怎么实现的?
#1
采用PWM控制输出波形或者使用GPIO模拟PWM产生对应的波形
#2
GPIO模拟 +1
#3
PWM 就可以了。不能用GPIO模拟啊,不准的。
#4
谁告诉你GPIO不准的,那要看你代码怎么控制,一般的PWM都可以用GPIO来模拟
#5
你用定时器+GPIO 才行
这样就准。
是我没说全。
#6
自己写一个pwm或者I/O模拟pwm的驱动程序。编译到系统里面。
应用程序调用驱动程序的接口函数IoControl,操作硬件.
应用程序调用驱动程序的接口函数IoControl,操作硬件.
#7
+1
#8
我用的是GPIO来输出,已经可以输出脉冲了!
如果要加定时器的话,怎样加?能否具体说明一下?
如果要加定时器的话,怎样加?能否具体说明一下?
#9
GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。
#10
低电平->高电平->延时->低电平
#11
高低电平的设置是通过 WriteFile 还是 DeviceIoControl函数,我现在用 WriteFile 也按照你说的这个方法来设置了,但是始终无法出现
#12
两种方式都可以,你没有设置成功,原因有可能是其他地方用到了这个GPIO,导致你设置不成功,你检查下试试!
#13
你是想在驱动层控制,还是应用层控制?
(1)驱动层控制:
直接再启动的时候加注册表buildin里面。然后再init函数里面写一个线程,在这个线程里面处理输出波形。可以用gpio模拟波形。不过中间的延迟部分,尽量用timer来控制。否则多线程的操作系统软件延迟会出现偏差。
(2)应用层控制:
vs直接写代码就可以。不需要弄个驱动,再调用这个驱动。需要操作哪个寄存器。直接映射到你写的应用程序的进程内存中,然后进行操作。具体流程和驱动层控制一样。当然你非要写个流驱动,然后写个exe去ioctl,也同样可以实现。
代码写起来:
while(1){
gpio_ctl(HIGH);
Timer_delay(DELAY_TIME);
gpio_ctl(LOW);
Timer_delay(DELAY_TIME);
}
(1)驱动层控制:
直接再启动的时候加注册表buildin里面。然后再init函数里面写一个线程,在这个线程里面处理输出波形。可以用gpio模拟波形。不过中间的延迟部分,尽量用timer来控制。否则多线程的操作系统软件延迟会出现偏差。
(2)应用层控制:
vs直接写代码就可以。不需要弄个驱动,再调用这个驱动。需要操作哪个寄存器。直接映射到你写的应用程序的进程内存中,然后进行操作。具体流程和驱动层控制一样。当然你非要写个流驱动,然后写个exe去ioctl,也同样可以实现。
代码写起来:
while(1){
gpio_ctl(HIGH);
Timer_delay(DELAY_TIME);
gpio_ctl(LOW);
Timer_delay(DELAY_TIME);
}
#14
wince6.0能够通过应用程直接操作寄存器吗?怎么实现的?