STM32
直播中

郝埃连

7年用户 1395经验值
私信 关注
[问答]

stm32f207zet6是如何使用定时器1产生PWM波形的

STM32f207zet6芯片的配置步骤是怎样的?

stm32f207zet6是如何使用定时器1产生PWM波形的?

回帖(1)

李敏

2021-10-19 15:42:15
  使用芯片:stm32f207zet6
  使用定时器1的通道1
  配置步骤
  1.配置定时器的基本寄存器
  TIM1-》PSC=59; //配置分频数
  TIM1-》ARR=60; //配置自动重装值
  TIM1-》CNT=0; //计数值清零
  2.配置PWM的相关寄存器
  TIM1-》CR1&=~(0x3《《5); //配置PWM模式边沿对齐模式
  TIM1-》CR1&=~(1《《4); //向上计数
  3.配置通道1的相关寄存器
  //配置输出通道1
  TIM1-》CCMR1&=~(1《《0); //配置方向为输出
  TIM1-》CCMR1|=1《《3; //开启PWM预装载使能
  TIM1-》CCMR1|=0x7《《4; //配置PWM模式2
  TIM1-》CCER|=1《《0; //开启-OC1信号输出到对应的输出引脚
  TIM1-》CCER|=1《《2;
  TIM1-》CCR1=60/2; //默认占空比给50%
  4.1.查看数据手册看定时器1的通道1是那个引脚
  我这里是PE9引脚的复用2(AF2)上,定时器1为高级定时器,器功能也是比普通的定时器功能更高一点,这里的通道1有一个TIM1_CH1和TIM1_CH1N这两个引脚是专门用作驱动电机的,可以通过配置对应的寄存器去做处理,可以配置成TIM1_CH1和TIM1_CH1N输出相同和相反的电平
  
  4.2.根据AFRL和AFRH寄存器将IO口配置成对应的复用模式(AF2)
  
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_TIM1);
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  GPIO_Init(GPIOE,&GPIO_InitStructure);
  5.使能定时器
  //配置定时器的BDTR寄存器
  /*
  和普通的定时器多了这一个步骤,有些配置完定时器后仿真时可以发现定时器在计数,IO口模式也是对的,也复用到了对应的模式下,但是IO口的电平就是没有变化,原因就是这里了
  */
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
  //开启定时器
  TIM1-》CR1|=1《《0; //开启定时器
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分