在定时器通用例程上面做了一个修改,测试一个20ms的脉宽,可是测试出来最低就是0.1S。
while ( 1 )
{
if(TIM_ICUserValueStructure.Capture_FinishFlag == 1)
{
// 计算高电平时间的计数器的值
time = TIM_ICUserValueStructure.Capture_Period * (GENERAL_TIM_PERIOD+1) +
(TIM_ICUserValueStructure.Capture_CcrValue+1);
printf ( "\r\n捕获寄存器的值:%d \r\n",time );
// 打印高电平脉宽时间
printf ( "\r\n测得高电平脉宽时间:%d.%d s\r\n",time/TIM_PscCLK,time%TIM_PscCLK );
TIM_ICUserValueStructure.Capture_FinishFlag = 0;
}
else{
SOFT_DELAYON;
GENERAL_TIM_CH1_EN_ON;
SOFT_DELAY;
GENERAL_TIM_CH1_EN_OFF;
}
} |