在wince6.0下怎样实现发出脉冲的功能?

时间:2022-08-03 08:54:36
在wince6.0下怎样实现发出脉冲波形的功能?这个脉冲主要是控制伺服电机的。硬件是s5pv210,求解!

14 个解决方案

#1


采用PWM控制输出波形或者使用GPIO模拟PWM产生对应的波形

#2


GPIO模拟 +1

#3


PWM 就可以了。不能用GPIO模拟啊,不准的。

#4


引用 3 楼 lqxandroid2012 的回复:
PWM 就可以了。不能用GPIO模拟啊,不准的。
谁告诉你GPIO不准的,那要看你代码怎么控制,一般的PWM都可以用GPIO来模拟

#5


引用 4 楼 chenkui456 的回复:
引用 3 楼 lqxandroid2012 的回复:PWM 就可以了。不能用GPIO模拟啊,不准的。谁告诉你GPIO不准的,那要看你代码怎么控制,一般的PWM都可以用GPIO来模拟


你用定时器+GPIO 才行
这样就准。
是我没说全。

#6


自己写一个pwm或者I/O模拟pwm的驱动程序。编译到系统里面。

应用程序调用驱动程序的接口函数IoControl,操作硬件.

#7


引用 6 楼 lf_kyo 的回复:
自己写一个pwm或者I/O模拟pwm的驱动程序。编译到系统里面。

应用程序调用驱动程序的接口函数IoControl,操作硬件.

+1

#8


我用的是GPIO来输出,已经可以输出脉冲了!
如果要加定时器的话,怎样加?能否具体说明一下?

#9


GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。

#10


引用 9 楼 tasksleep 的回复:
GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。

低电平->高电平->延时->低电平

#11


引用 10 楼 hao507 的回复:
引用 9 楼 tasksleep 的回复:GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。
低电平->高电平->延时->低电平

高低电平的设置是通过 WriteFile 还是 DeviceIoControl函数,我现在用 WriteFile  也按照你说的这个方法来设置了,但是始终无法出现

#12


引用 11 楼 tasksleep 的回复:
引用 10 楼 hao507 的回复:
引用 9 楼 tasksleep 的回复:GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。
低电平->高电平->延时->低电平
高低电平的设置是通过 WriteFile 还是 DeviceIoControl函数,我现在用 WriteFile  也按照你说的这个方法来设置了,但是始终无法出现

两种方式都可以,你没有设置成功,原因有可能是其他地方用到了这个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);
}

#14


引用 13 楼 kacyquan 的回复:
你是想在驱动层控制,还是应用层控制?
(1)驱动层控制:
    直接再启动的时候加注册表buildin里面。然后再init函数里面写一个线程,在这个线程里面处理输出波形。可以用gpio模拟波形。不过中间的延迟部分,尽量用timer来控制。否则多线程的操作系统软件延迟会出现偏差。

(2)应用层控制:
    vs直接写代码就可以。不需要弄个驱动,再调用这个驱动……



wince6.0能够通过应用程直接操作寄存器吗?怎么实现的?

#1


采用PWM控制输出波形或者使用GPIO模拟PWM产生对应的波形

#2


GPIO模拟 +1

#3


PWM 就可以了。不能用GPIO模拟啊,不准的。

#4


引用 3 楼 lqxandroid2012 的回复:
PWM 就可以了。不能用GPIO模拟啊,不准的。
谁告诉你GPIO不准的,那要看你代码怎么控制,一般的PWM都可以用GPIO来模拟

#5


引用 4 楼 chenkui456 的回复:
引用 3 楼 lqxandroid2012 的回复:PWM 就可以了。不能用GPIO模拟啊,不准的。谁告诉你GPIO不准的,那要看你代码怎么控制,一般的PWM都可以用GPIO来模拟


你用定时器+GPIO 才行
这样就准。
是我没说全。

#6


自己写一个pwm或者I/O模拟pwm的驱动程序。编译到系统里面。

应用程序调用驱动程序的接口函数IoControl,操作硬件.

#7


引用 6 楼 lf_kyo 的回复:
自己写一个pwm或者I/O模拟pwm的驱动程序。编译到系统里面。

应用程序调用驱动程序的接口函数IoControl,操作硬件.

+1

#8


我用的是GPIO来输出,已经可以输出脉冲了!
如果要加定时器的话,怎样加?能否具体说明一下?

#9


GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。

#10


引用 9 楼 tasksleep 的回复:
GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。

低电平->高电平->延时->低电平

#11


引用 10 楼 hao507 的回复:
引用 9 楼 tasksleep 的回复:GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。
低电平->高电平->延时->低电平

高低电平的设置是通过 WriteFile 还是 DeviceIoControl函数,我现在用 WriteFile  也按照你说的这个方法来设置了,但是始终无法出现

#12


引用 11 楼 tasksleep 的回复:
引用 10 楼 hao507 的回复:
引用 9 楼 tasksleep 的回复:GPIO 是怎么输出脉冲的,代码能不能发一段出来,学习一下。
低电平->高电平->延时->低电平
高低电平的设置是通过 WriteFile 还是 DeviceIoControl函数,我现在用 WriteFile  也按照你说的这个方法来设置了,但是始终无法出现

两种方式都可以,你没有设置成功,原因有可能是其他地方用到了这个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);
}

#14


引用 13 楼 kacyquan 的回复:
你是想在驱动层控制,还是应用层控制?
(1)驱动层控制:
    直接再启动的时候加注册表buildin里面。然后再init函数里面写一个线程,在这个线程里面处理输出波形。可以用gpio模拟波形。不过中间的延迟部分,尽量用timer来控制。否则多线程的操作系统软件延迟会出现偏差。

(2)应用层控制:
    vs直接写代码就可以。不需要弄个驱动,再调用这个驱动……



wince6.0能够通过应用程直接操作寄存器吗?怎么实现的?