我用的是arm7的开发板,想测一个频率为100hz左右的方波的占空比和脉冲宽度 以前用中断,现在就直接用查询的方法,利用定时器的捕获功能 把外部信号接到定时器的cap0,允许双边沿中断,中断时读取保存了T0TC的T0CCR 然后处理,部分程序如下:
..... while(1) { timer0_start(); //复位并开始计数 T0CCR=0X05; //允许上升沿中断 while((T0IR&0X10)!=0X10); //查询中断标志位 IR0_START=T0CR0; //读取计数值 T0IR=0X10; //清中断标志位 T0CCR=0X06; //允许下降沿中断 while((T0IR&0X10)!=0X10); //查询中断标志位 IR0_MID=T0CR0; //读取计数值 T0IR=0X10; //清中断标志位 T0CCR=0X05; //允许上升沿中断 while((T0IR&0X10)!=0X10); //查询中断标志位 IR0_END=T0CR0; //读取计数值 T0IR=0X10; //清中断标志位 timer0_end(); //停止计数器 } ...........
请问这个流程是否合理,或者谁有更好的方法? 我在实测的时候,IR0_START大约为0 IR0_MID大致和IR0_END相等,这不符合实际的波形,目前也分析不出原因。 请高手指点! 3x!
|