这是我的程序,用来是实时测量由遥控器发出的pwm波的正脉冲的长度。pwm波70hz,正脉冲的长度可以从2.1ms到0.9ms之间调整。<br /><br /><br />//测量PWM波的正脉冲长<br />uint32 Pwm_Measure(void)<br />{ uint32 DUTY;<br /> T0PR = 0;<br /> T0TC = 0x00;<br /> <br /> while((IO0PIN&0x00000040) == 0); //检测p0.6的电压信号<br /> T0TCR = 0x01;<br /> while((IO0PIN&0x00000040) != 0);<br /> T0TCR = 0x00;<br /> <br /> DUTY = T0TC;<br /> return(DUTY);<br />}<br /><br /><br />int main()<br />{ uint32 time;<br /> uint8 i;<br /> PINSEL0 = 0X00000005; //设置i/o连接到UART0<br /> <br /> UART0_Init();<br /> //VICVECT_Init();<br /> <br /> while(1)<br /> { <br /> time = Pwm_Measure();<br /> for(i=0; i<4; i++)<br /> { rcv_buf = time & 0xff;<br /> time = time >>8;<br /> }<br /> SendBuf();<br /> DelayNS(10);<br /> }<br /> return(0);<br />}<br /><br />从串口返回一些数。你比如说我用遥控器控制pwm波的占空比由少变多,最一开始的返回的数跟最后的返回值是一样的,除了我在调整遥控器过程中返回的数会发生变化。这是为什么啊,为什么pwm的占空比变了,返回的数最后还是一样的啊? |
|