STM32F207使用定时器1产生PWM波形
Posted 耳 东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F207使用定时器1产生PWM波形相关的知识,希望对你有一定的参考价值。
使用芯片: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对应的IO口
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; //开启定时器
以上是关于STM32F207使用定时器1产生PWM波形的主要内容,如果未能解决你的问题,请参考以下文章