OpenEdv-开源电子网

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

pwm问题:如果我用定时器实现pwm输出,我要吧TIM1_ch1改成TIM1_CH2,应该修改那个地方?

[复制链接]

16

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-9
在线时间
13 小时
发表于 2019-7-23 14:55:44 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-7-23 15:19:07 | 显示全部楼层
  1. void TIM1_PWM_Init(u16 arr, u16 psc)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.     TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  5.     TIM_OCInitTypeDef TIM_OCInitSturcture;

  6.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE);
  7.     //初始化IO口
  8.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;
  9.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  10.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  11.     GPIO_Init(GPIOA, &GPIO_InitStructure);

  12.     //设置 TIM ARR PSC
  13.     TIM_TimeBaseInitStructure.TIM_Period = arr;
  14.     TIM_TimeBaseInitStructure.TIM_Prescaler = psc;
  15.     TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  16.     TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;                //向上计数模式
  17.     TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0x00;
  18.     TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);

  19.     //TIM1_CH1  PWM1 模式
  20.     TIM_OCInitSturcture.TIM_OCMode = TIM_OCMode_PWM1;
  21.     TIM_OCInitSturcture.TIM_OutputState = TIM_OutputState_Enable;
  22.     TIM_OCInitSturcture.TIM_OCPolarity = TIM_OCPolarity_High;                        //输出高电平有效
  23.     TIM_OC1Init(TIM1, &TIM_OCInitSturcture);

  24.     //TIM1_CH2  PWM1 模式
  25.     TIM_OCInitSturcture.TIM_OCMode = TIM_OCMode_PWM1;
  26.     TIM_OCInitSturcture.TIM_OutputState = TIM_OutputState_Enable;
  27.     TIM_OCInitSturcture.TIM_OCPolarity = TIM_OCPolarity_Low;                 //输出低电平有效
  28.     TIM_OC2Init(TIM1, &TIM_OCInitSturcture);


  29.     //TIM1_CH3  PWM2 模式
  30.     TIM_OCInitSturcture.TIM_OCMode = TIM_OCMode_PWM2;
  31.     TIM_OCInitSturcture.TIM_OutputState = TIM_OutputState_Enable;
  32.     TIM_OCInitSturcture.TIM_OCPolarity = TIM_OCPolarity_High;                 //输出高电平有效
  33.     TIM_OC3Init(TIM1, &TIM_OCInitSturcture);

  34.     //TIM1_CH4  PWM2 模式
  35.     TIM_OCInitSturcture.TIM_OCMode = TIM_OCMode_PWM2;
  36.     TIM_OCInitSturcture.TIM_OutputState = TIM_OutputState_Enable;
  37.     TIM_OCInitSturcture.TIM_OCPolarity = TIM_OCPolarity_Low;                 //输出低电平有效
  38.     TIM_OC4Init(TIM1, &TIM_OCInitSturcture);


  39.     TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);                                        //TIM1_CH1 使能预装载寄存器
  40.     TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);                                         //TIM1_CH2 使能预装载寄存器
  41.     TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);                                         //TIM1_CH3 使能预装载寄存器
  42.     TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);                                         //TIM1_CH4 使能预装载寄存器


  43.     TIM_Cmd(TIM1, ENABLE);                                //使能计数器
  44.     TIM_CtrlPWMOutputs(TIM1, ENABLE);        //主输出使能
  45. }
复制代码


回复

使用道具 举报

16

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2019-7-9
在线时间
13 小时
 楼主| 发表于 2019-7-23 16:38:43 | 显示全部楼层

请问
TIM_TimeBaseInitStructure.TIM_RepetitionCounter
是干什么吗用的?
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-7-23 17:05:32 | 显示全部楼层
尘世入门 发表于 2019-7-23 16:38
请问
TIM_TimeBaseInitStructure.TIM_RepetitionCounter
是干什么吗用的?

重复计数寄存器
1.jpg
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 04:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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