控制输出方波的脉冲数和周期

2019-07-20 00:51发布

好多人遇到这个问题,额!
现在我用了两种方法实现,感觉都不好!
 方案1:定时器翻转IO,到达指定个数关闭TIM
方案2:PWM,开启比较捕获中断,到达指定个数关闭TIM

感觉都是频繁进中断,占用大量CPU资源。不能做其他事了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
36条回答
cwfwh
2019-07-23 07:31
不知道这个算法准不准,楼主帮我测一下吧。
void puls(u16 f,u16 count)
{  unsigned char flag=1;
        u16 number,temp=count;
        TIM3_PWM_Init(f,0);         //f为PWM频率
        TIM_SetCompare2(TIM3,f/2);  //50%占空比
        do{
        number=TIM3->CNT ;        //TIM3当前计数值
        if(flag&&number>=f/2)      
        {
                temp=temp-1;
                flag=0;
        }
        if(number>=1&&number<f/2)
        {
                flag=1;
        }
        }while(temp>0);                 
        if(!temp) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, DISABLE);  
}

一周热门 更多>