PWM发脉冲,怎么精确控制发脉冲的个数呢

PWM发脉冲,怎么精确控制发脉冲的个数呢

ID:47012749

大小:499.01 KB

页数:9页

时间:2019-12-03

PWM发脉冲,怎么精确控制发脉冲的个数呢_第1页
PWM发脉冲,怎么精确控制发脉冲的个数呢_第2页
PWM发脉冲,怎么精确控制发脉冲的个数呢_第3页
PWM发脉冲,怎么精确控制发脉冲的个数呢_第4页
PWM发脉冲,怎么精确控制发脉冲的个数呢_第5页
资源描述:

《PWM发脉冲,怎么精确控制发脉冲的个数呢》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32的PWM发送脉冲,周期和脉宽都可调了,但是现在不知道如何精确的控制所发的脉冲个数。具体要求就是在一段时间内大概50ms内发送5000-1W个脉冲 个数要很精确,误差2个以内可以接受该怎么控制呢?1.接上一个外部中断口,在中断中计数2.用一个定时器对发脉冲的时间进行控制各位大侠还有什么好的办法吗?求解啊!PWM溢出中断计数,是个不错的解决办法。如果一个上升沿算一个脉冲的话,控制周期(频率)不就行了开启PWM输出的溢出中断,进入一次中断,就是一个波原子哥 是这里吗?设置这个寄存器或者只是简单的定时器溢出中断oid TIM3

2、_IRQHandler(void){  if(TIM3->SR&0X0001)//溢出中断  {     ....     //计数  }  TIM3->SR&=~(1<<0);//清除中断标志位}看我们开发板:定时器中断例程。你好  原子哥    中断计数的话  那怎么停止呢    还有停止了还想让他循环发送呢    有没有实现好的源程序呢   我是STM32F103控制输出方波的脉冲数和周期好多人遇到这个问题,额!现在我用了两种方法实现,感觉都不好! 方案1:定时器翻转IO,到达指定个数关闭TIM方案2:PWM,开启比较捕获

3、中断,到达指定个数关闭TIM感觉都是频繁进中断,占用大量CPU资源。不能做其他事了voidTIM4_GPIO_Config(void){  GPIO_InitTypeDefGPIO_InitStructure;     /*TIM4clockenable*/    //PCLK1经过2倍频后作为TIM4的时钟源等于72MHz  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); NVIC_Configuration(1);   /*GPIOBclockenable*/  RCC

4、_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB

5、RCC_APB2Periph_GPIOC,ENABLE);   /*GPIOBConfiguration:TIM4channel1and2asalternatefunctionpush-pull*/  GPIO_InitStructure.GPIO_Pin= GPIO_Pin_6

6、GPIO_Pin_7;  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;          //复用推挽输出  GPIO_In

7、itStructure.GPIO_Speed=GPIO_Speed_50MHz;  GPIO_Init(GPIOB,&GPIO_InitStructure);  GPIO_ResetBits(GPIOB,GPIO_Pin_6

8、GPIO_Pin_7);}  voidTim2_Slave_Init(void){    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;    TIM_DeInit(TIM2);    RCC_APB1PeriphClockCmd(RCC_APB1Periph_

9、TIM2,ENABLE);    NVIC_Configuration(8);        TIM_TimeBaseStructure.TIM_Period=XBUF[1]-1;    TIM_TimeBaseStructure.TIM_Prescaler=0;        //时钟预分频数    TIM_TimeBaseStructure.TIM_ClockDivision=0; //采样分频    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上溢

10、出    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);     TIM_SelectInputTrigger(TIM2,TIM_TS_ITR3);//选择TIM2的输入触发源 内部触发3 TIM4    TIM_InternalClockConfig(TIM2);    TIM2->SMCR

11、= 0x0007;//设定从模式控制寄存器,外部时钟模式1上升沿驱动计数         //TIM_UpdateDisableConfig(TIM4,ENABLE);    TIM_ARRP

12、reloadConfig(TIM2,ENABLE);    TIM_ClearFlag(TIM2,TIM_FLAG_Update);   //清除溢出中断标志    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);    TIM_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。