你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32f103 tim1 PWM 求助

[复制链接]
zhahl 提问时间:2016-12-23 17:18 /
我在PWM设置1通道为输出,在程序仿真时波形正常,下载进去就没有波形了,求大神指教!
收藏 2 评论6 发布时间:2016-12-23 17:18

举报

6个回答
zhahl 回答时间:2016-12-23 17:49:59
  1. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  2.         TIM_OCInitTypeDef  TIM_OCInitStructure;

  3.   /* Enable TIM1 clock */  
  4.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //TIM1
  5.   
  6.   // Time Base configuration,定时器初始化
  7.   TIM_TimeBaseStructure.TIM_Period = 1000-1;      //定时时间:50*10us=500us
  8.   TIM_TimeBaseStructure.TIM_Prescaler = 0;  // 720/72 = 10us,定时器周期
  9.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //0
  10.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  11.   // TIM1 configure
  12.   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);    //初始化定时器1

  13.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  14.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  15.   //TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  16.   TIM_OCInitStructure.TIM_Pulse = 750;
  17.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  18.   //TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  19.   //TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  20. // TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

  21.   TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  22.   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
  23.   /* TIM1 Main Output Enable
  24.    TIM1 counter enable */
  25.   TIM_Cmd(TIM1, ENABLE);
复制代码
zhahl 回答时间:2016-12-23 17:50:21
wenyangzeng 回答时间:2016-12-23 18:32:28
你好像没有使能相关的GPIO口呀。
五哥1 回答时间:2016-12-23 23:08:48
能在仿真时出现正确的波形,但是在硬件上没有,这个还是硬件的问题,看看你的硬件是否连线正常,先测试下相应的基本功能。再根据出现的情况一步一步分析。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

小小超 回答时间:2016-12-24 08:32:44
仿真是有点区别。还是按实际的用吧
shuolang126 回答时间:2016-12-24 08:38:20
  /* System Clocks Configuration */
  RCC_Configuration();

  /* GPIO Configuration */
  GPIO_Configuration();

  /* TIM1 Configuration ---------------------------------------------------
   TIM1CLK = SystemCoreClock, Prescaler = 0, TIM1 counter clock = SystemCoreClock
   SystemCoreClock is set to 72 MHz for Low-density, Medium-density, High-density
   and Connectivity line devices and to 24 MHz for Low-Density Value line and
   Medium-Density Value line devices
   
   The objective is to generate 7 PWM signal at 17.57 KHz:
     - TIM1_Period = (SystemCoreClock / 17570) - 1
   The channel 1 and channel 1N duty cycle is set to 50%
   The Timer pulse is calculated as follows:
     - ChannelxPulse = DutyCycle * (TIM1_Period - 1) / 100
  ----------------------------------------------------------------------- */
  /* Compute the value to be set in ARR regiter to generate signal frequency at 17.57 Khz */
  TimerPeriod = (SystemCoreClock / 17570 ) - 1;
  /* Compute CCR1 value to generate a duty cycle at 50% for channel 1 and 1N */
  Channel1Pulse = (uint16_t) (((uint32_t) 5 * (TimerPeriod - 1)) / 10);
  /* Time Base configuration */
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = TimerPeriod;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  /* Channel 1 Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = Channel1Pulse;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;

  TIM_OC1Init(TIM1, &TIM_OCInitStructure);

  /* TIM1 counter enable */
  TIM_Cmd(TIM1, ENABLE);

  /* TIM1 Main Output Enable */
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
--------------------------------------------------------------------
以上是官方例程,请参考!
楼主确实IO初始化和  TIM_CtrlPWMOutputs(TIM1, ENABLE);
不妨试试!
另外,仿真和脱机运行会不一致是正常的!

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版