STM32日记之TIM1模块产生PWM
STM32输出不同频率PWM

STM32一定时器产生不同频率的PWM(转载)2011-05-05 12:07平时记性实在太差,调试完的程序,过两天又忘了,往往需要一阵子才能想起来,有时以前的资料找不到了,更是恼火,不得不重复到网上搜索。
刚刚调试成功了一个类型的程序,立刻记下来,呵呵,不要又忘记了。
STM32产生PWM是非常的方便的,要需要简单的设置定时器,即刻产生!当然,简单的设置对于新手来产,也是麻烦的,主要包括:(1)使能定时器时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);(2)定义相应的GPIO:/* PA2,3,4,5,6输出->Key_Up,Key_Down,Key_Left,Key_Right,Key_Ctrl */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_ Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //下拉接地,检测输入的高电平GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度GPIO_Init(GPIOA, &GPIO_InitStructure);/* PA7用于发出PWM波,即无线数据传送 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度GPIO_Init(GPIOA, &GPIO_InitStructure);(3)如果是产生PWM(频率不变,占空比可变),记得打开PWM控制,在TIM_Configurat ion()中。
STM32 TIM的PMW模式

STM32 TIM的PMW模式STM32开发板学习日记-[5]TIM的PMW模式脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。
必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数或中心对称模式中)。
因为仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIMx_EGR寄存器中的UG位来初始化所有的寄存器。
OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP 位设置,它可以设置为高电平有效活或低电平有效。
TIMx_CCER寄存器中的CCxE位控制OCx输出使能。
在PWM模式(模式1或模式2)下,TIMx_CNT和TIM1_CCRx 始终在进行比较,(依据计数器的计数方向)以确定是否符合TIM1_CCRx≤TIM1_CNT或者TIM1_CNT≤TIM1_CCRx。
然而为了与OCREF_CLR的功能(在下一个PWM周期之前,ETR信号上的一个外部事件能够清除OCxREF)一致,OCxREF信号只能在下述条件下产生:●当比较的结果改变●当输出比较模式(TIMx_CCMRx寄存器中的OCxM位)从“冻结”(无比较,OCxM=’000’)切换到某个PWM模式(OCxM=’110’或’111’)。
STM32高级定时器TIM1输出六路带死区互补PWM波形

本文讲述如何配置单片机STM32F407VET6高级定时器TIM1输出六路带死区互补PWM波形。
一、高级定时器TIM1介绍
高级定时器TIM1有5种计数模式:
TIM_CounterMode_Up、TIM_CounterMode_Down
TIM_CounterMode_CenterAligned1
TIM_CounterMode_CenterAligned2
TIM_CounterMode_CenterAligned3
PWM输出有2种模式:
TIM_OCMode_PWM1、TIM_OCMode_PWM2
查看ST官方RM0090参考手册,高级定时器TIM1框图如下:
本文以高级定时器TIM1工作在TIM_CounterMode_Up模式,PWM工作在TIM_OCMode_PWM1为例,讲述如何配置输出六路带死区互补PWM波形。
二、配置代码示例
1.IO配置
硬件IO说明
TIM1_CH1---->PE9 TIM1_CH1N---->PE8
TIM1_CH2---->PE11 TIM1_CH2N---->PE10
TIM1_CH3---->PE13 TIM1_CH3N---->PE12
IO配置具体代码如下:
2. 定时器配置
三、实验测试
1. 测试硬件平台接线
2.测试结果
由测试结果可以看到高级定时器TIM1可以输出六路带死区互补PWM波形。
具体死区时间如何计算,下篇文章会讲解,敬请关注!。
基于STM32定时器产生PWM的研究

基于STM32定时器产生PWM的研究引言:PWM(脉冲宽度调制)是一种常用的调制技术,它可以通过调整信号的脉冲宽度来控制电路的输出。
在嵌入式系统中,使用定时器产生PWM信号是非常常见的操作,如驱动电机、发光二极管以及控制舵机等。
本文将基于STM32定时器,研究定时器产生PWM的原理和使用方法。
一、STM32定时器简介:STM32定时器是一种嵌入在STM32微控制器上的专用硬件模块,用于产生特定的定时信号。
它可以通过配置和控制寄存器来控制定时器的工作方式和周期。
STM32系列微控制器通常配备了多个定时器,如TIM1、TIM2、TIM3等。
每个定时器有多个通道,可以用于产生PWM信号。
二、定时器工作模式:STM32定时器有多种工作模式可供选择,如基本模式、PWM输入模式、PWM输出模式等。
其中,PWM输出模式是我们常用的一种。
定时器的PWM输出模式可以分为两种类型:单脉冲模式和双脉冲模式。
在单脉冲模式下,定时器将在计数器达到一定值时产生一个脉冲,然后重新开始计数。
在双脉冲模式下,定时器在计数器达到一半的值时产生一个脉冲,然后在计数器达到设定值时再产生一个脉冲。
三、配置定时器产生PWM:1.选择定时器和通道:首先,选择一个空闲的定时器和通道,并将其配置为PWM输出模式。
2.设置定时器的时钟分频系数:根据实际需求,设置定时器的时钟分频系数,以确定定时器的溢出周期。
3.设置定时器的重载值:根据实际需要,设置定时器的重载值,决定了PWM信号的周期。
4.设置占空比:通过改变通道的比较值来调整PWM信号的占空比,在通道的CCR寄存器中设置一个比较值,当计数器的值达到比较值时,输出会发生相应的变化。
5.启动定时器:最后,启动定时器使其开始工作,产生PWM信号。
四、实验与应用:基于以上配置,可以在STM32上实现各种PWM信号的产生和控制。
例如,可以使用定时器产生PWM信号来控制直流电机的转速。
通过改变PWM 信号的占空比,可以调整电机的转速。
stm32输出pwm占空比代码

stm32输出pwm占空比代码在STM32单片机中,输出PWM(脉冲宽度调制)信号是非常普遍的操作,这种信号通常用于控制电机、LED灯等电子设备的亮度或运动状态。
本文将详细介绍STM32单片机如何输出PWM占空比代码。
一、配置TIM定时器要输出PWM信号,首先需要进行TIM定时器的配置。
在KEIL C 编译器中,可以通过CubeMX插件进行配置。
在此之前需要先引入库文件“stm32fxx_hal_tim.h”。
在CubeMX中选择对应的TIM,进入“Mode”选项卡,将TIM定时器配置为PWM输出模式。
在“Configuration”选项卡中,配置TIM的时钟源和预分频系数等信息。
此外还需要配置PWM的周期和占空比,具体可以通过下面的步骤实现。
二、设置PWM周期在代码中设置PWM周期,可以使用HAL库中的“__HAL_TIM_SET_AUTORELOAD”函数。
该函数的第一个参数为TIM定时器的句柄,第二个参数为PWM的周期,单位为计数器的值。
可以根据需要调整该值来改变PWM的输出频率。
例如,将PWM周期设置为1000,代码如下:__HAL_TIM_SET_AUTORELOAD(&htim1, 1000);三、设置PWM占空比在代码中设置PWM占空比,需要使用HAL库中的“__HAL_TIM_SET_COMPARE”函数。
该函数的第一个参数是TIM定时器的句柄,第二个参数是设置输出PWM的通道,第三个参数是占空比。
占空比的取值范围为0到PWM周期。
例如,将PWM占空比设置为500,代码如下:__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 500);四、使用PWM输出信号最后,在代码中使用PWM输出信号,可以使用HAL库中的“HAL_TIM_PWM_Start”函数。
该函数的参数为TIM的句柄和输出PWM 的通道。
例如,在TIM1通道1上启动PWM输出,代码如下:HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);以上就是STM32单片机输出PWM占空比代码的详细步骤。
STM32一定时器产生不同频率的PWM

STM32一定时器产生不同频率的PWM(转载)2011-05-05 12:07平时记性实在太差,调试完的程序,过两天又忘了,往往需要一阵子才能想起来,有时以前的资料找不到了,更是恼火,不得不重复到网上搜索。
刚刚调试成功了一个类型的程序,立刻记下来,呵呵,不要又忘记了。
? ? STM32产生PWM是非常的方便的,要需要简单的设置定时器,即刻产生!当然,简单的设置对于新手来产,也是麻烦的,主要包括:(1)使能定时器时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);(2)定义相应的GPIO:/* PA2,3,4,5,6输出->Key_Up,Key_Down,Key_Left,Key_Right,Key_Ctrl */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //下拉接地,检测输入的高电平GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度GPIO_Init(GPIOA, &GPIO_InitStructure);/* PA7用于发出PWM波,即无线数据传送 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;?GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度GPIO_Init(GPIOA, &GPIO_InitStructure);(3)如果是产生PWM(频率不变,占空比可变),记得打开PWM控制,在TIM_Configuration()中。
STM32笔记(二)TIM模块产生PWM

STM32笔记(二)TIM模块产生PWM这个是STM32的PWM输出模式,STM32的TIM1模块是增强型的定时器模块,天生就是为电机控制而生,可以产生3组6路PWM,同时每组2路PW M为互补,并可以带有死区,可以用来驱动H桥。
下面的代码,是利用TIM1模块的1、2通道产生一共4路PWM的代码例子,类似代码也可以参考ST的固件库中相应exampleC语言: TIM1模块产生PWM,带死区//Step1.开启TIM和相应端口时钟//启动GPIORCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GP IOB | \RCC_APB2Periph_GPIOC | RCC_APB2Periph_GP IOD,\ENABLE);//启动AFIORCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//启动TIM1RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//Step2. GPIO做相应设置,为AF输出//PA.8/9口设置为TIM1的OC1输出口GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//PB.13/14口设置为TIM1_CH1N和TIM1_CH2N输出口GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);//Step3. TIM模块初始化void TIM_Configuration(void){TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;TIM_BDTRInitTypeDef TIM_BDTRInitStructure;//TIM1基本计数器设置(设置PWM频率)//频率=TIM1_CLK/(ARR+1)TIM_BaseInitStructure.TIM_Period = 1000-1;TIM_BaseInitStructure.TIM_Prescaler = 72-1;TIM_BaseInitStructure.TIM_ClockDivision = 0;TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_BaseInitStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);//启用ARR的影子寄存器(直到产生更新事件才更改设置)TIM_ARRPreloadConfig(TIM1, ENABLE);//TIM1_OC1模块设置(设置1通道占空比)TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enabl e;TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Ena ble;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; TIM_OCInitStructure.TIM_Pulse = 120;TIM_OC1Init(TIM1, &TIM_OCInitStructure);//启用CCR1寄存器的影子寄存器(直到产生更新事件才更改设置)TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);//TIM2_OC2模块设置(设置2通道占空比)TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enabl e;TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Ena ble;TIM_OCInitStructure.TIM_Pulse = 680;TIM_OC2Init(TIM1, &TIM_OCInitStructure);//启用CCR2寄存器的影子寄存器(直到产生更新事件才更改设置)TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);//死区设置TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;TIM_BDTRInitStructure.TIM_DeadTime = 0x90; //这里调整死区大小0-0xffTIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity _High;TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOu tput_Enable;TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);//TIM1开启TIM_Cmd(TIM1, ENABLE);//TIM1_OC通道输出PWM(一定要加)TIM_CtrlPWMOutputs(TIM1, ENABLE);}其实,PWM模块还可以有很多花样可以玩,比方在异常时(如CPU时钟有问题),可以紧急关闭输出,以免发生电路烧毁等严重事故。
STM32 笔记通用定时器输出PWM

STM32学习笔记:通用定时器输出PWM分类:STM32学习笔记2014-03-18 19:31 687人阅读评论(0) 收藏举报stm32通用定时器PWM输出脉冲宽度调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字输出对模拟电路进行控制的一种非常有效的控制技术,常用于控制Led灯的亮度、电机转速等。
STM32 的定时器除了TIM6 和7,其他的定时器都可以用来产生PWM 输出。
其中高级定时器TIM1和TIM8可以同时产生高达7路的PWM输出,通用定时器TIM2~TIM5可以同时产生4路PWM输出。
使用通用定时器输出PWM同样需要4步配置,由于输出PWM信号时,不需要定时器中断,所以不需要配置NVIC,但是需要配置TIM_OCInitStructure。
下面已配置TIM2为例:(1)开启系统时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);(2)配置GPIOGPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);(3)配置TIMERTIM_DeInit(TIM2);TIM_TimeBaseStructure.TIM_Period = 3599; //重装载值3600TIM_TimeBaseStructure.TIM_Prescaler = 0;//预分频系数0,意味着不分频,由两项参数可算出定时器频率为20KHzTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);(4)配置TIM_OCInitStructurevoid TIM2_PWM_Init(void){TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//输出模式为PWM1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性高,即输出高电平TIM_OCInitStructure.TIM_Pulse =40*36; //设置PWM占空比为40%TIM_OC1Init(TIM2, &TIM_OCInitStructure);//初始化TIM2信道1TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);//开启TIM2信道1的预装载寄存器TIM_OCInitStructure.TIM_Pulse =0*36;TIM_OC2Init(TIM2, &TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);TIM_OCInitStructure.TIM_Pulse =90*36;TIM_OC3Init(TIM2, &TIM_OCInitStructure);TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);TIM_OCInitStructure.TIM_Pulse =0*36;TIM_OC4Init(TIM2, &TIM_OCInitStructure);TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM2, ENABLE);TIM_Cmd(TIM2, ENABLE);}结构体TIM_OCInitTypeDef的定义为:typedef struct{uint16_t TIM_OCMode;uint16_t TIM_OutputState;uint16_t TIM_OutputNState;uint16_t TIM_Pulse;uint16_t TIM_OCPolarity;uint16_t TIM_OCNPolarity;uint16_t TIM_OCIdleState;uint16_t TIM_OCNIdleState;} TIM_OCInitTypeDef;其中TIM_OCPolarity、TIM_OCMode、TIM_OutputState、TIM_Pulse四个属性是需要我们设置的,其他四个属性是高级定时器TIM1和TIM8才有用的,在这里不做介绍。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言: TIM1模块产生PWM,带死区
//Step1.开启TIM和相应端口时钟
//启动GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | \
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD,\
ENABLE);
//启动AFIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
//启动TIM1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
//Step2. GPIO做相应设置,为AF输出
//PA.8/9口设置为TIM1的OC1输出口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8| GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//PB.13/14口设置为TIM1_CH1N和TIM1_CH2N输出口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13| GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//Step3. TIM模块初始化
void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
//TIM1基本计数器设置(设置PWM频率)
//频率=TIM1_CLK/(ARR+1)
TIM_BaseInitStructure.TIM_Period = 1000-1;
TIM_BaseInitStructure.TIM_Prescaler = 72-1;
TIM_BaseInitStructure.TIM_ClockDivision = 0;
TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &TIM_BaseInitStructure);
//启用ARR的影子寄存器(直到产生更新事件才更改设置)
TIM_ARRPreloadConfig(TIM1, ENABLE);
//TIM1_OC1模块设置(设置1通道占空比)
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_Pulse = 120;
TIM_OC1Init(TIM1, &TIM_OCInitStructure);
//启用CCR1寄存器的影子寄存器(直到产生更新事件才更改设置)
TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
//TIM2_OC2模块设置(设置2通道占空比)
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = 680;
TIM_OC2Init(TIM1, &TIM_OCInitStructure);
//启用CCR2寄存器的影子寄存器(直到产生更新事件才更改设置)
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
//死区设置
TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
TIM_BDTRInitStructure.TIM_DeadTime = 0x90; //这里调整死区大小0-0xff
TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
//TIM1开启
TIM_Cmd(TIM1, ENABLE);
//TIM1_OC通道输出PWM(一定要加)
TIM_CtrlPWMOutputs(TIM1, ENABLE);
}。