如何用STM32的TIM1产生 带死区的新唐pwm互补死区设定PWM

STM32日记之TIM1模块产生PWM(分别用库函数和寄存器)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32日记之TIM1模块产生PWM(分别用库函数和寄存器)
上传于||文档简介
&&分别用库函数和寄存器来实现TIM1产生PWM
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢&&&&STM32日记之TIM1模块产生PWM(分别用库函数和寄存器)
STM32日记之TIM1模块产生PWM(分别用库函数和寄存器)
这次的任务是:用STM32的一个定时器在四个通道上产生四路频率可调占空比可调的PWM波。
看到这个题,我先看STM32的数据手册,把STM32的定时器手册看完就花了一天,但是看了一遍任然不知道所云,就看库函数,略有点理解,就想一哈把这个程序调出来,于是就花了一天多时间仿照网上别人的程序来写,花了一天多写出来调试,结果行不通,做了无用功,于是静下心来想想,还是一步一步的来。
我先用STM32的通用定时器用PWM模式产生四路相同占空比,不同频率的PWM波
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行TIM1-PWM STM32 PWM 两路输出,带死区时间 ARM-PowerPC-ColdFire-MIPS 微处理器开发 243万源代码下载-
&文件名称: TIM1-PWM& & [
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 920 KB
&&上传时间:
&&下载次数: 202
&&提 供 者:
&详细说明:STM32 TIM1 PWM 两路输出,带死区时间-STM32 TIM1 PWM two outputs with dead time
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&TIM1 PWM 带死区\Config\platform_config.h&&...............\......\stm32f10x_it.c&&...............\......\stm32f10x_it.h&&...............\FWLib\inc\cortexm3_macro.h&&...............\.....\...\stm32f10x_adc.h&&...............\.....\...\stm32f10x_bkp.h&&...............\.....\...\stm32f10x_can.h&&...............\.....\...\stm32f10x_conf.h&&...............\.....\...\stm32f10x_crc.h&&...............\.....\...\stm32f10x_dac.h&&...............\.....\...\stm32f10x_dbgmcu.h&&...............\.....\...\stm32f10x_dma.h&&...............\.....\...\stm32f10x_exti.h&&...............\.....\...\stm32f10x_flash.h&&...............\.....\...\stm32f10x_fsmc.h&&...............\.....\...\stm32f10x_gpio.h&&...............\.....\...\stm32f10x_i2c.h&&...............\.....\...\stm32f10x_iwdg.h&&...............\.....\...\stm32f10x_lib.h&&...............\.....\...\stm32f10x_map.h&&...............\.....\...\stm32f10x_nvic.h&&...............\.....\...\stm32f10x_pwr.h&&...............\.....\...\stm32f10x_rcc.h&&...............\.....\...\stm32f10x_rtc.h&&...............\.....\...\stm32f10x_sdio.h&&...............\.....\...\stm32f10x_spi.h&&...............\.....\...\stm32f10x_systick.h&&...............\.....\...\stm32f10x_tim.h&&...............\.....\...\stm32f10x_type.h&&...............\.....\...\stm32f10x_usart.h&&...............\.....\...\stm32f10x_wwdg.h&&...............\.....\src\stm32f10x_adc.c&&...............\.....\...\stm32f10x_bkp.c&&...............\.....\...\stm32f10x_can.c&&...............\.....\...\stm32f10x_crc.c&&...............\.....\...\stm32f10x_dac.c&&...............\.....\...\stm32f10x_dbgmcu.c&&...............\.....\...\stm32f10x_dma.c&&...............\.....\...\stm32f10x_exti.c&&...............\.....\...\stm32f10x_flash.c&&...............\.....\...\stm32f10x_fsmc.c&&...............\.....\...\stm32f10x_gpio.c&&...............\.....\...\stm32f10x_i2c.c&&...............\.....\...\stm32f10x_iwdg.c&&...............\.....\...\stm32f10x_lib.c&&...............\.....\...\stm32f10x_nvic.c&&...............\.....\...\stm32f10x_pwr.c&&...............\.....\...\stm32f10x_rcc.c&&...............\.....\...\stm32f10x_rtc.c&&...............\.....\...\stm32f10x_sdio.c&&...............\.....\...\stm32f10x_spi.c&&...............\.....\...\stm32f10x_systick.c&&...............\.....\...\stm32f10x_tim.c&&...............\.....\...\stm32f10x_usart.c&&...............\.....\...\stm32f10x_wwdg.c&&...............\Peripheral\fonts.h&&...............\..........\ili932x.c&&...............\..........\ili932x.h&&...............\..........\lcd.c&&...............\..........\lcd.h&&...............\..........\me.c&&...............\..........\PWM.h&&...............\..........\USART.h&&...............\.roject\JLink Regs CM3.txt&&...............\.......\JLinkLog.txt&&...............\.......\JLinkSettings.ini&&...............\.......\List\STM32F103ZE.map&&...............\.......\....\stm32f10x_vector.lst&&...............\.......\main.c&&...............\.......\OutPut\lcd.crf&&...............\.......\......\lcd.d&&...............\.......\......\main.crf&&...............\.......\......\main.d&&...............\.......\......\main.o&&...............\.......\......\me.crf&&...............\.......\......\me.d&&...............\.......\......\me.o&&...............\.......\......\STM32F103ZE.axf&&...............\.......\......\STM32F103ZE.fed&&...............\.......\......\STM32F103ZE.hex&&...............\.......\......\STM32F103ZE.htm&&...............\.......\......\STM32F103ZE.lnp&&...............\.......\......\STM32F103ZE.plg&&...............\.......\......\STM32F103ZE.sct&&...............\.......\......\STM32F103ZE.tra&&...............\.......\......\stm32f10x_it.crf&&...............\.......\......\stm32f10x_it.d&&...............\.......\......\stm32f10x_it.o&&...............\.......\......\stm32f10x_vector.d&&...............\.......\......\stm32f10x_vector.o&&...............\.......\......\stm32f10x_vector._ia&&...............\.......\......\systemfunctions.crf&&...............\.......\......\systemfunctions.d&&...............\.......\......\systemfunctions.o&&...............\.......\STM32F103ZE.plg&&...............\.......\STM32F103ZE.uvgui.sun&&...............\.......\STM32F103ZE.uvgui_sun.bak&&...............\.......\STM32F103ZE.uvopt&&...............\.......\STM32F103ZE.uvproj&&...............\.......\STM32F103ZE_STM32.dep
&[]:不能解压或下载失败&[]:很好,推荐下载
&近期下载过的用户:
&&&&&&&&&&&&&&&&&&&&[]
&相关搜索:
&&&&&&&&&&
&输入关键字,在本站243万海量源码库中尽情搜索:
&[] - STM32 space vector pwm generation for brushless motor control
&[] - STM32 输出8路0-20K独立可调频率脉冲,排除网上其他单纯通过比较输出模式输出pwm信号有死区(盲区:低频率无法输出区域)的问题,本代码0-5K误差为1,20K时,误差为33.3,用到的朋友可以看下。
&[] - STM32单片机输出Spwm波驱动全桥电路,使输出50Hz正弦波
&[] - STM32的定时器详细资料与例程,包括定时、pwm输出、普通捕获、PWM捕获、特殊定时器介绍等
&[] - STM32高级定时器TIM1产生不规则的波形,通过串口可以随意更改占空比。
&[] - STM32的pwm输出模式,STM32的TIM1模块是增强型的定时器模块,天生就是为电机控制而生,可以产生3组6路PWM,同时每组2路PWM为互补,并可以带有死区,可以用来驱动H桥。
&[] - 89C51单片机用定时器来产生PWM方波,方波的频率与占空比可调
&[] - 通过DSP2812的三相pwm输出控制电机的启动、加速、匀速、减速、停止等操作,并可设置加速、减速时间,及功率输出系数,实现对电机的变频调速控制。
&[] - STM32程序,高级定时器TIM1发六路带死区的互补pwm波,原创代码
&[] - STM32 定时器1反向通道pwm输出,脉冲宽度可调匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。学习后发现的定时器功能确实很强大小总结一下方便以后使用的时候做参考。定时器一共分为三种:和是高级定时器,和是基本定时器,—是通用定时器。从名字就可以看得出来主要功能上的差异。今天我主要是用定时器做输出,所以总结也主要是针对方面的。
先大致说下通用和高级定时器的区别。通用的可以输出四路信号互不影响。高级定时器可以输出三对互补信号外加通道,也就是一共七路。
所以这样算下来一共可以生成路信号。接下来还有功能上的区别:通用定时器的信号比较简单,就是普通的调节占空比调节频率(别的不常用到的没去深究);高级定时器的还带有互补输出功能,同时互补信号可以插入死区,也可以使能刹车功能,从这些看来高级定时器的天生就是用来控制电机的。
输出最基本的调节就是频率和占空比。频率当然又和时钟信号扯上了关系。高级定时器是挂接到上,而通用定时器是挂接到上的。和的区别就要在于时钟频率不同。最高频率允许,而最高频率为。这样是不是通用定时器只最高频率呢,不是的;通用定时器时钟信号完整的路线应该是下面这样的:
()→分频器(默认)→时钟信号()→倍频器(倍)→通用定时器时钟信号()。
在和定时器中间的倍频器起到了巨大的作用,假如红色字体的“分频器”假如不为(默认是),倍频器会自动将时钟频率扩大倍后作为定时器信号源,这个它内部自动控制的不用配置。设置这个倍频器的目的很简单就是在是的情况下通用定时器的频率同样能达到。我用的库函数直接调用函数这个函数之后时钟配置好了:通用定时器和高级定时器的时钟现在都是(你也可以自己再配置一下让他的频率更低,但是不能再高了)。定时器接下来还有一个分频寄存器:经过他的分频后,才是定时器计数的频率。所以真正的时钟频率应该是,我们设为下面还会用到。
的时钟频率弄得确实是很饶人的,所以关键就是先要把思路理清楚。时钟的频率弄好了下面终于可以开说重点了。当然还少不了频率:主要就是控制频率和占空比的:这两个因素分别通过两个寄存器控制:和。寄存器就是自动重装寄存器,也就是计数器记到这个数以后清零再开始计,这样的频率就是()。在计数时会不停的和寄存器中的数据进行比较,如果小于的话是高电平或者低电平,计数值大于值的话电平极性反相。所以这也就控制了占空比。
高级定时器Tim1 互补死区输出std库代码:
void PWM_Init(void)
&GPIO_InitTypeDef GPIO_InitStructure2;
&TIM_TimeBaseInitTypeDef TIM_TimeBaseS
&TIM_OCInitTypeDef TIM_OCInitS
&TIM_BDTRInitTypeDef TIM_BDTRInitS
&//时钟使能,管脚Rmap
&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_TIM1 | RCC_APB2Periph_AFIO,ENABLE);
&GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);
&TIM_DeInit(TIM1);
&TIM_InternalClockConfig(TIM1);
&//引脚配置
&//TIM1_CH1N
&GPIO_InitStructure2.GPIO_Pin=GPIO_Pin_8;
&GPIO_InitStructure2.GPIO_Speed=GPIO_Speed_50MHz;
&GPIO_InitStructure2.GPIO_Mode=GPIO_Mode_AF_PP;
&GPIO_Init(GPIOE,&GPIO_InitStructure2);
&//TIM1_CH1
&GPIO_InitStructure2.GPIO_Pin=GPIO_Pin_9;
&GPIO_InitStructure2.GPIO_Speed=GPIO_Speed_50MHz;
&GPIO_InitStructure2.GPIO_Mode=GPIO_Mode_AF_PP;
&GPIO_Init(GPIOE,&GPIO_InitStructure2);
&//定时器基本配置
&TIM_TimeBaseStructure.TIM_Period=2-1;
&TIM_TimeBaseStructure.TIM_Prescaler=72-1;
&TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
&TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
&TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
&TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
&//定时器比较输出配置
&TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
&TIM_OCInitStructure.TIM_Pulse=1;
&TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_H&
&TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_R
&TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_E
&//高级定时器才有的互补输出配置
&TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_H
&TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_E
&TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_R
&TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_R
&TIM_OC1Init(TIM1,&TIM_OCInitStructure);
&//高级定时器死区配置
&TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_D//??????? 1/2 ??????????
&TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_D//??????? 1/2 ??????
&TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF; //???¨?è??
&TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
&TIM_BDTRInitStructure.TIM_DeadTime = 0x70; //?????± 1/4 ??è??
&TIM_BDTRInitStructure.TIM_Break = TIM_Break_D //???u????????
&TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_H//???u???? 1/4 <<??
&TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_E//×???????????
&TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);& //?????????è??
&//ccr1自动重装载
&TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);& //????TIMX??ccr1??u??¤×°??
&TIM_ARRPreloadConfig(TIM1, ENABLE);//????TIMX??ARR??u??¤×°??
&TIM_Cmd(TIM1,ENABLE); //?ò??TIM1
&//高级定时器才有的主输出使能
&TIM_CtrlPWMOutputs(TIM1, ENABLE);
&//????????????,?±?PWMu?AEu????? 1/4 ??±?u÷????TIM_SetAutoreload()
&//TIM_SetCompare1() ??? 1/2 ,????? 3/4 ???????
&#65279;&#65279;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:27239次
排名:千里之外
转载:20篇
(2)(1)(4)(2)(1)(12)(6)}

我要回帖

更多关于 stm32 tim1 pwm 死区 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信