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