本帖最后由 STC8050 于 2016-4-19 00:06 编辑
最近在做32的简易频率计,网上搜到的大多是用捕获来求频率,都说频率精度很高。。可我试了感觉也不怎么高,频率一高误差高得吓人。。(应该是太菜,不懂算法。
)
然后就尝试用两个定时器做。一个外部模式2(TIM2),一个来数数(TIM3)。低频的是直接测两个周期时间得频率,频率高点的1s中断得TIM2的计数值求频率。。
可是在计算频率方法转换时(由高频率计算方式到低频率计算方式)程序会跑飞。。其余效果还是可以的。。有哪位大神可以帮我看看!!
代码:
中断:
void TIM3_IRQHandler(void)
{
if ( TIM_GetITStatus(TIM3 , TIM_IT_Update) != RESET )
{
IWDG_ReloadCounter();
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
if(MODE_T == modeSlect)
{
over_load +=1;
}
else
{
//获取1s内脉冲计数个数
nCount = TIM_GetCounter(TIM2);
TIM_SetCounter(TIM2,0);
TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE);
//