找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2288|回复: 1
收起左侧

自己瞎玩了个stm32出PWM脉波的程序,用按键控制改变PWM波

[复制链接]
ID:215023 发表于 2017-6-27 10:05 | 显示全部楼层 |阅读模式
直流电机可能需要控制速度,自己做了个小车,通过按键来控制直流电机的转速。
我用的事stm32f103的型号。
附上一段主要的程序。
static void TIM3_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

  /* Time base configuration */                 
  TIM_TimeBaseStructure.TIM_Period = 999;     
  TIM_TimeBaseStructure.TIM_Prescaler = 0;         
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;           
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        
  TIM_OCInitStructure.TIM_Pulse = 375;         
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

  /* PWM1 Mode configuration: Channel2 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 375;         
  TIM_OC2Init(TIM3, &TIM_OCInitStructure);         
  TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(TIM3, ENABLE);               
  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);               
}

void TIM3_Mode_REConfig(void)
{
        //TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
        int CCR1_Val[] = {0,100,200,300,400,500,600,700,800,900};         
  int CCR2_Val[] = {0,100,200,300,400,500,600,700,800,900};
        
        printf("111=%u\n",CCR1_Val[shift1]);
        TIM_Cmd(TIM3, DISABLE);               
  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;         
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val[shift1];
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

  /* PWM1 Mode configuration: Channel2 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR2_Val[shift2];
  TIM_OC2Init(TIM3, &TIM_OCInitStructure);
  TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
  TIM_ARRPreloadConfig(TIM3, ENABLE);               
  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);                  
        printf("222\n");
}

发的比较着急,大家有问题留言。

1键值改变PWM脉宽.7z

181.35 KB, 下载次数: 36, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:215023 发表于 2017-6-27 10:05 | 显示全部楼层
建议下载附件调试。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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