[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]if(tsr&0x02)//捕获1发生捕获事件
{
if(TIM5CH1_CAPTURE_STA&0X40) //捕获到一个下降沿
{
TIM5CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次高电平脉宽
TIM5CH1_CAPTURE_VAL=TIM5->CCR1; //获取当前的捕获值.
printf("1:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("2:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("3:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("4:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("5:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("6:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("7:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("8:%lld us
",TIM5CH1_CAPTURE_VAL);
TIM5->CCER&=~(1<<1); //CC1P=0 设置为上升沿捕获[/mw_shl_code]
在在输入捕获定时器中断函数中,
[mw_shl_code=c,true]TIM5CH1_CAPTURE_VAL=TIM5->CCR1; //获取当前的捕获值[/mw_shl_code]
在这一句后面加个显示函数显示值,每次显示的都不一样,显示如下
然后,同样的在主函数中
if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
语句后面加入显示函数,
[mw_shl_code=c,true]if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
{
temp=TIM5CH1_CAPTURE_STA&0X3F;
temp*=0XFFFFFFFF; //溢出时间总和
temp+=TIM5CH1_CAPTURE_VAL; //得到总的高电平时间
printf("4:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("5:%lld us
",TIM5CH1_CAPTURE_VAL);
printf("5:%lld us
",TIM5CH1_CAPTURE_VAL);[/mw_shl_code]
显示结果如图
这是为什么?
一周热门 更多>