OpenEdv-开源电子网

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

定时器同步

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-7-28
在线时间
0 小时
发表于 2013-7-28 15:47:33 | 显示全部楼层 |阅读模式
 st的固件库例程中 用的是TIM2做主模式同步触发TIM3和TIM4 我想用TIM3同步触发TIM2和TIM1  一直没能成功,是不是TIM3不能做主模式?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-7-28 16:03:37 | 显示全部楼层
回复【楼主位】masiling:
---------------------------------
几个通用定时器应该是差不多的 出现这种问题很令人费解啊
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-7-28 16:14:17 | 显示全部楼层
大家给点建议吧 这个问题困扰我一天了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-28 16:23:48 | 显示全部楼层
TIM2,TIM3,TIM4,TIM5是完全一模一样的哦.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-7-28 16:31:49 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
的确是一样的 可是将例程中的主模式TIM2换成TIM3就不行 这个说不通啊,下面是程序代码,这个程序可以使用,如果把TIM2换成TIM3就行不通。

 /**
   ******************************************************************************
   * @file TIM/Parallel_Synchro/main.c 
   * @author  MCD Application Team
  * @version  V3.0.0
  * @date  04/06/2009
  * @brief  Main program body
   ******************************************************************************
   * @copy
   *
   * THE RESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT ROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR RODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR RODUCTS.
  *
  * <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2>
   */ 

 /* Includes ------------------------------------------------------------------*/
 #include "stm32f10x.h"
 
 /** @addtogroup StdPeriph_Examples
  * @{
   */
 
/** @addtogroup TIM_Parallel_Synchro
   * @{
   */ 

 /* rivate typedef -----------------------------------------------------------*/
 /* rivate define ------------------------------------------------------------*/
 /* rivate macro -------------------------------------------------------------*/
 /* rivate variables ---------------------------------------------------------*/
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
 
 /* rivate function prototypes -----------------------------------------------*/
 void RCC_Configuration(void);
 void GPIO_Configuration(void);
 
 /* rivate functions ---------------------------------------------------------*/
 
 /**
   * @brief  Main program
  * @param  None
   * @retval: None
   */
 int main(void)
 {
   /* System Clocks Configuration */
   RCC_Configuration();

   /* GPIO Configuration */
  GPIO_Configuration();

  /* Timers synchronisation in parallel mode ----------------------------
     1/TIM3 is configured as Master Timer:
     - PWM Mode is used
     - The TIM2 Update event is used as Trigger Output  
     2/TIM1 and TIM2 are slaves for TIM3,
     - PWM Mode is used
     - The ITR1(TIM3) is used as input trigger for both slaves
     - Gated mode is used, so starts and stops of slaves counters
       are controlled by the Master trigger output signal(update event).
     
      The TIMxCLK is fixed to 72 MHz, the TIM3 counter clock is 72 MHz.
     The Master Timer TIM2 is running at 281.250 KHz and the duty cycle
     is equal to 25%
     The TIM3 is running:
    - At (TIM2 frequency)/ (TIM3 period + 1) = 28.125 KHz and a duty cycle
     equal to TIM3_CCR1/(TIM3_ARR + 1) = 30%
     The TIM4 is running:
      - At (TIM2 frequency)/ (TIM4 period + 1) = 56.250 KHz and a duty cycle
     equal to TIM4_CCR1/(TIM4_ARR + 1) = 60%
   -------------------------------------------------------------------- */
 
  /* Time base configuration */
   TIM_TimeBaseStructure.TIM_Period = 255;
 TIM_TimeBaseStructure.TIM_Prescaler = 0;
   TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

   TIM_TimeBaseStructure.TIM_Period = 9;
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
 
  TIM_TimeBaseStructure.TIM_Period = 4;
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
 
   /* Master Configuration in PWM1 Mode */
   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 64;
   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
 
   TIM_OC1Init(TIM2, &TIM_OCInitStructure);
 
   /* Select the Master Slave Mode */
   TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);
 
   /* Master Mode selection */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

   /* Slaves Configuration: PWM1 Mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 3;
 
  TIM_OC1Init(TIM4, &TIM_OCInitStructure);
 
   TIM_OC1Init(TIM1, &TIM_OCInitStructure);
 
   /* Slave Mode selection: TIM3 */
   TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Gated);
   TIM_SelectInputTrigger(TIM4, TIM_TS_ITR1);
 
   /* Slave Mode selection: TIM4 */
   TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Gated);
   TIM_SelectInputTrigger(TIM1, TIM_TS_ITR1);
 
   /* TIM enable counter */
   TIM_Cmd(TIM4, ENABLE);
   TIM_Cmd(TIM2, ENABLE);
   TIM_Cmd(TIM1, ENABLE);

  TIM_CtrlPWMOutputs(TIM1, ENABLE);

   while (1)
   {}
 }

/**
   * @brief  Configures the different system clocks.
   * @param  None
   * @retval: None
   */
 void RCC_Configuration(void)
 {
  /* Setup the microcontroller system. Initialize the Embedded Flash Interface,  
     initialize the PLL and update the SystemFrequency variable. */
   SystemInit();
  
   /* TIM2, TIM3 and TIM4 clock enable */
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 |
                          RCC_APB1Periph_TIM4, ENABLE);
 
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
   /* GPIOA and GPIOB clock enable */
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
 }

 /**
  * @brief  Configure the GPIOD Pins.
   * @param  None
   * @retval: None
   */
 void GPIO_Configuration(void)
 {
   GPIO_InitTypeDef GPIO_InitStructure;
 
   /* GPIOA Configuration: PA0(TIM2 CH1) and PA6(TIM3 CH1) as alternate function push-pull */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_6 | GPIO_Pin_8;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 
   GPIO_Init(GPIOA, &GPIO_InitStructure);

   /* GPIOB Configuration: PB6(TIM4 CH1) as alternate function push-pull */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

   GPIO_Init(GPIOB, &GPIO_InitStructure);
 }

 #ifdef  USE_FULL_ASSERT
 
 /**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
   * @param file: pointer to the source file name
  * @param line: assert_param error line source number
   * @retval: None
   */
 void assert_failed(uint8_t* file, uint32_t line)
 {
   /* User can add his own implementation to report the file name and line number,
      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
 
  while (1)
   {}
 }
 #endif
 
 /**
  * @}
  */ 
 
 /**
   * @}
   */ 

 /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-7-28
在线时间
0 小时
 楼主| 发表于 2013-7-29 09:34:11 | 显示全部楼层
回复【5楼】masiling:
---------------------------------问题解决了,软件仿真默认的是TIM2做主模式
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-29 16:34:27 | 显示全部楼层
回复【6楼】masiling:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-3-22
在线时间
0 小时
发表于 2018-3-22 09:58:49 | 显示全部楼层
正点原子 发表于 2013-7-28 16:23
TIM2,TIM3,TIM4,TIM5是完全一模一样的哦.

定时器TIM1同步启动TIM2,TIM3怎么配置,求教啊,原子哥
回复 支持 反对

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2315
金钱
2315
注册时间
2017-7-6
在线时间
281 小时
发表于 2019-4-17 10:33:14 | 显示全部楼层
可以的,我贴图出来
001.png
002.png
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 05:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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