OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 20133|回复: 47

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

[复制链接]

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2015-1-24 10:08:23 | 显示全部楼层 |阅读模式
5金钱
好多人遇到这个问题,额!
现在我用了两种方法实现,感觉都不好!
 方案1:定时器翻转IO,到达指定个数关闭TIM
方案2:PWM,开启比较捕获中断,到达指定个数关闭TIM

感觉都是频繁进中断,占用大量CPU资源。不能做其他事了

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]void TIM4_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* TIM4 clock enable */ //PCLK1经过2倍频后作为TIM4的时钟源等于72MHz RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); NVIC_Configuration(1); /* GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE); /*GPIOB Configuration: TIM4 channe ...
电子人生!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 10:08:24 | 显示全部楼层
[mw_shl_code=c,true]void TIM4_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* TIM4 clock enable */ //PCLK1经过2倍频后作为TIM4的时钟源等于72MHz RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); NVIC_Configuration(1); /* GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE); /*GPIOB Configuration: TIM4 channel 1 and 2 as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); } void Tim2_Slave_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM2); RCC_APB1PeriphClockCmd(RCC_APB1Periph_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;//向上溢出 TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); TIM_SelectInputTrigger(TIM2,TIM_TS_ITR3);//选择TIM2的输入触发源 内部触发3 TIM4 TIM_InternalClockConfig(TIM2); TIM2->SMCR |= 0x0007;//设定从模式控制寄存器,外部时钟模式1 上升沿驱动计数 //TIM_UpdateDisableConfig(TIM4,ENABLE); TIM_ARRPreloadConfig(TIM2, ENABLE); TIM_ClearFlag(TIM2,TIM_FLAG_Update); //清除溢出中断标志 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); TIM_Cmd(TIM2,ENABLE);//是否开启时钟(开启后每发送一个脉冲,定时器加一) } void Tim3_Slave_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM3); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); NVIC_Configuration(9); TIM_TimeBaseStructure.TIM_Period= XBUF[3] - 1; TIM_TimeBaseStructure.TIM_Prescaler= 0; //时钟预分频数 TIM_TimeBaseStructure.TIM_ClockDivision=0; //采样分频 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上溢出 TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); TIM_SelectInputTrigger(TIM3,TIM_TS_ITR3);//选择TIM2的输入触发源 内部触发3 TIM4 TIM_InternalClockConfig(TIM3); TIM3->SMCR |= 0x0007;//设定从模式控制寄存器,外部时钟模式1 上升沿驱动计数 //TIM_UpdateDisableConfig(TIM4,ENABLE); TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_ClearFlag(TIM3,TIM_FLAG_Update); //清除溢出中断标志 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); TIM_Cmd(TIM3,ENABLE);//是否开启时钟(开启后每发送一个脉冲,定时器加一) } /* * 函数名:TIM4_Mode_Config * 描述 :配置TIM4输出的PWM信号的模式,如周期、极性、占空比 * 输入 :无 * 输出 :无 * 调用 :内部调用 */ void TIM4_PWM_Init(u16 T) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; u16 CCR1_Val = (T+1)/2; u16 CCR2_Val = (T+1)/2; u16 CCR3_Val = (T+1)/2; u16 CCR4_Val = (T+1)/2; /* ----------------------------------------------------------------------- TIM1 Configuration: generate 4 PWM signals with 4 different duty cycles: TIM1CLK = 36 MHz, Prescaler = 0x0, TIM1 counter clock = 36 MHz TIM1 ARR Register = 999 => TIM1 Frequency = TIM1 counter clock/(ARR + 1) TIM1 Frequency = 36 KHz. TIM1 Channel1 duty cycle = (TIM1_CCR1/ TIM1_ARR)* 100 = 50% TIM1 Channel2 duty cycle = (TIM1_CCR2/ TIM1_ARR)* 100 = 50% TIM1 Channel3 duty cycle = (TIM1_CCR3/ TIM1_ARR)* 100 = 50% TIM1 Channel4 duty cycle = (TIM1_CCR4/ TIM1_ARR)* 100 = 50% ----------------------------------------------------------------------- */ /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = T-1;//T us TIM_TimeBaseStructure.TIM_Prescaler = 72-1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM4->CR1 &= ((u16)0x03FD);// UDIS enable /* PWM1 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR1_Val; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM4, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable); /* PWM1 Mode configuration: Channel2 */ TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR2_Val; TIM_OC2Init(TIM4, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable); /* TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR3_Val; TIM_OC3Init(TIM4, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR4_Val; TIM_OC4Init(TIM4, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);*/ TIM_ARRPreloadConfig(TIM4, ENABLE); TIM_SelectOutputTrigger(TIM4,TIM_TRGOSource_OC1Ref); /* TIM1 enable counter */ TIM_Cmd(TIM4, ENABLE); /* Main Output Enable */ TIM_CtrlPWMOutputs(TIM4, ENABLE); } void TIM4_PWM_START(void) { TIM4_GPIO_Config(); Tim2_Slave_Init(); Tim3_Slave_Init(); TIM4_PWM_Init(XBUF[0]); }[/mw_shl_code]


电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 10:09:26 | 显示全部楼层
貌似第二个方法,如果是一个定时器的4路通道的话,还限定了周期
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 10:16:06 | 显示全部楼层
好像还有一种方法,就是利用定时器内部互联,一个定时器的给另一个定时器提供时钟,主从模式
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 10:19:37 | 显示全部楼层
有没有好的建议啊,PLC内部的PTO是怎么实现的啊,为何STM32实现起来不是很好啊
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 14:44:04 | 显示全部楼层
貌似,成功了!定时器内部互联,一个PWM输出脉冲给另一个定时提供时钟,每来一个脉冲,计数器值+1,当+到指定个数后,产生一次中断,然后关闭PWM输出。
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 14:49:05 | 显示全部楼层
 发一次  跟发n次,每次都是设置的脉冲数!很精确,一个不多一个不少,我测试了下  20us的周期,发5000个,连续发了7次,都是准的!上图!

电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 14:53:20 | 显示全部楼层
不过感觉这种方法还不是我想要的,毕竟两个定时器才控制一路脉冲,要是PWM的4个通道路分别给4个的定时器提供时钟,那就好了!
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 14:55:07 | 显示全部楼层
有没有人来探讨一下,求解答啊
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 15:12:22 | 显示全部楼层
刚看了下手册,这里确实能够选择比较捕获通道

电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 15:30:40 | 显示全部楼层
如果是1路脉冲的话,我选择TIM_TRGOSource_Update和TIM_TRGOSource_OC1 一样的效果,不同在于后者每次脉冲会少一个。

脉冲输出通道1:选择TIM_TRGOSource_OC1Ref
脉冲输出通道2:选择TIM_TRGOSource_OC2Ref
脉冲输出通道3:选择TIM_TRGOSource_OC3Ref
脉冲输出通道4:选择TIM_TRGOSource_OC4Ref

这样话有个问题,是不是一个主定时器能有多个从定时器,
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 15:31:54 | 显示全部楼层
待我测试一下!
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 16:15:49 | 显示全部楼层
从定时器:TIM2,TIM3
TIM_SelectInputTrigger(TIM2,TIM_TS_ITR3);
TIM_SelectInputTrigger(TIM3,TIM_TS_ITR3);
主定时器:TIM4
TIM_SelectOutputTrigger(TIM4,TIM_TRGOSource_OC1Ref|TIM_TRGOSource_OC2Ref);
卡到这里了,这个主定时器的触发输入该如何选择啊,上面这样可行吗?
为何每次都有1个脉冲的差距啊,蛋都碎了
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 16:16:35 | 显示全部楼层
一主二从    TIM4的PWM通道1  给TIM2   通道2给TIM3
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 16:16:55 | 显示全部楼层
原子哥求解答啊!
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 16:31:49 | 显示全部楼层
要是能一对一触发就好了,我还以为是OC1Ref触发TIM2,OC2Ref触发TIM3,想多了,
OC1就能触发TIM2和TIM3了,现在正常了,个数也很准了!

但是,中断频繁的问题解决了,还有一个问题
一个定时器的PWM的两个通道的频率是一样的,这就意味着我用TIM4发出去的脉冲  虽然可以控制个数不一样,但是周期还是一样的

这对于先前要求的周期个数分别可控又走远了,看来一个主定时器 只能有一种周期方波产生,可以有多个不同个数相同周期方波产生!

我总结了一下,应用场合如下(个人总结,可能有所偏差或者错误)
周期个数都独立可控 ------  几路脉冲输出对应几个主定时器
周期可控不独立个数可控且独立------一路主多路从,几路脉冲输出对应几个从定时器
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-1-24 16:33:20 | 显示全部楼层
苦逼周六加班族,提前下班了算了!
电子人生!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-1-24 23:13:09 | 显示全部楼层
看来楼主今天做了很多事情,我只能帮顶了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

130

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1878
金钱
1878
注册时间
2011-9-16
在线时间
421 小时
发表于 2015-1-25 10:12:55 | 显示全部楼层
用CPLD会不会好做点
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-19
在线时间
3 小时
发表于 2015-11-5 09:13:59 | 显示全部楼层
回复【6楼】翱翔云端的鸟:
---------------------------------
楼主  你的“定时器内部互联,一个PWM输出脉冲给另一个定时提供时钟”的程序可以提供下吗
努力的人生才有意义
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-10-19
在线时间
3 小时
发表于 2015-11-5 11:12:42 | 显示全部楼层
回复【19楼】没时间先生1214:
---------------------------------
努力的人生才有意义
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-11-2
在线时间
2 小时
发表于 2015-11-6 11:52:33 | 显示全部楼层
楼主,有没有历程,可以参考一下,我现在也用到这个~~~~~~
回复

使用道具 举报

4

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2015-10-10
在线时间
16 小时
发表于 2015-11-9 14:27:42 | 显示全部楼层
回复【22楼】翱翔云端的鸟:
---------------------------------
强烈希望楼主上传工程文件,供后面的转业菜鸟学习!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-11-10 21:58:02 | 显示全部楼层
回复【23楼】eve1374894925:
---------------------------------
工程文件我需要裁剪  的  等我周六回去吧
电子人生!
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2015-12-12
在线时间
9 小时
发表于 2015-12-12 14:31:21 | 显示全部楼层
回复【22楼】翱翔云端的鸟:
---------------------------------
你好,我现在正搞这块,要精确控制PWM所发数量以控制步进电机前进步数,您的工程文件剪辑后可以传上来吗?学习学习
回复

使用道具 举报

20

主题

96

帖子

0

精华

初级会员

Rank: 2

积分
192
金钱
192
注册时间
2016-1-12
在线时间
62 小时
发表于 2016-4-13 13:43:20 | 显示全部楼层
翱翔云端的鸟 发表于 2015-11-6 15:46
[mw_shl_code=c,true]void TIM4_GPIO_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

楼主你好,我用了一下你这个两个定时器互联的方法。我的出现了一个问题:从定时器的计数周期arr只能设定为100的整数倍,才能不断进入中断服务函数。如果设置为其他数,就只能进入一次中断,还望能告知。
回复

使用道具 举报

头像被屏蔽

7

主题

21

帖子

0

精华

禁止发言

积分
1370
金钱
1370
注册时间
2011-6-12
在线时间
142 小时
发表于 2016-4-13 15:26:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

10

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2016-3-5
在线时间
33 小时
发表于 2016-4-22 15:59:02 | 显示全部楼层
不知道这个算法准不准,楼主帮我测一下吧。
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);  
}
回复

使用道具 举报

10

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-12-22
在线时间
51 小时
发表于 2016-6-15 20:34:56 | 显示全部楼层
可以采用DMA控制数量~
回复

使用道具 举报

25

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2016-6-3
在线时间
42 小时
发表于 2016-7-18 16:31:16 | 显示全部楼层
同样捣鼓了几天,求代码
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2016-7-21
在线时间
12 小时
发表于 2016-7-21 22:38:08 | 显示全部楼层
楼主,求代码~~
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2016-7-21 23:21:18 | 显示全部楼层
我下个星期回去了  测试整理一下就把代码发上来  好久了 我要找一下
电子人生!
回复

使用道具 举报

10

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
454
金钱
454
注册时间
2016-4-22
在线时间
82 小时
发表于 2016-7-26 10:24:07 | 显示全部楼层
翱翔云端的鸟 发表于 2016-7-21 23:21
我下个星期回去了  测试整理一下就把代码发上来  好久了 我要找一下

楼主很棒,分享一下代码相互学习一下吧,体会一下楼主程序的思想
回复

使用道具 举报

5

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2016-5-25
在线时间
86 小时
发表于 2016-11-15 09:58:52 | 显示全部楼层
楼主 解决了吗
笑着熬下去@_@
回复

使用道具 举报

0

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-10-15
在线时间
39 小时
发表于 2016-11-26 22:10:31 | 显示全部楼层
翱翔云端的鸟 发表于 2016-7-21 23:21
我下个星期回去了  测试整理一下就把代码发上来  好久了 我要找一下

楼主有没有做过机械手控制的项目,想请教一下
回复

使用道具 举报

0

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-10-15
在线时间
39 小时
发表于 2016-12-7 02:19:33 | 显示全部楼层
本帖最后由 jpaekeo 于 2016-12-7 02:34 编辑

应用场合如下
频率个数都独立可控 ------  几路脉冲输出对应几个主定时器
频率各从相同个数独立可控------一路主多路从,几路脉冲输出对应几个从定时器
总感觉楼主说的不对,还有你的一主二从模式得到了两路个数不同但频率相同的方波。最终目的还是没有实现嘛
回复

使用道具 举报

szx0410 该用户已被删除
发表于 2017-2-28 20:27:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2018-3-23
在线时间
0 小时
发表于 2017-5-3 10:58:47 | 显示全部楼层
楼主是做织布机的?
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2017-5-3 20:48:44 | 显示全部楼层
ken48172 发表于 2017-5-3 10:58
楼主是做织布机的?

第一年搞过   现在没搞了啊
电子人生!
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-8-3
在线时间
0 小时
发表于 2017-8-3 10:55:13 | 显示全部楼层
翱翔云端的鸟 发表于 2017-5-3 20:48
第一年搞过   现在没搞了啊

楼主你好,能把完整的工程文件发我吗?我也在学这个。万分感激!!!1424589066@qq.com\
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2017-12-27
在线时间
1 小时
发表于 2017-12-28 11:03:20 | 显示全部楼层
翱翔云端的鸟 发表于 2015-1-24 16:31
要是能一对一触发就好了,我还以为是OC1Ref触发TIM2,OC2Ref触发TIM3,想多了,
OC1就能触发TIM2和TIM3了, ...

您好,请问一主多从有没有程序可以参考一下?
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-12-28 21:48:18 来自手机 | 显示全部楼层
多此一举,一个TIM本身就可以同时输四路同频PWM与四路反相PWM
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-12-28 21:50:17 来自手机 | 显示全部楼层
一个100脚以上的可以搞定50路以上,还不耗CPU
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2017-6-10
在线时间
14 小时
发表于 2018-5-7 11:57:02 | 显示全部楼层
wlq19911021 发表于 2017-12-28 21:48
多此一举,一个TIM本身就可以同时输四路同频PWM与四路反相PWM

你不能精确控制产生的脉冲数,傻缺。。人家楼主是要精确控制脉冲数
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-7-8
在线时间
8 小时
发表于 2019-7-9 18:59:07 | 显示全部楼层
楼主你好,可以参考一下你的完整的主从定时器的工程文件吗?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-7-8
在线时间
8 小时
发表于 2019-7-9 22:29:29 | 显示全部楼层
楼主你好,定时器互联后,定时器的中断部分应该怎么写呢
回复

使用道具 举报

8

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2019-4-27
在线时间
88 小时
发表于 2020-1-22 16:42:35 | 显示全部楼层
mark
留一下   是用2个定时器 控制一个PWM吗    一个发波一个计数?
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-1-26 21:43:35 | 显示全部楼层
星期八 发表于 2019-7-9 22:29
楼主你好,定时器互联后,定时器的中断部分应该怎么写呢

http://www.openedv.com/forum.php ... d=297375&extra=
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表