如何用stm32f103 tim1 pwm的TIM1产生 带死区的互补PWM

STM32 用TIM1 产生互补PWM的问题? - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 7945|回复: 11
STM32 用TIM1 产生互补PWM的问题?
在线时间53 小时
主题帖子精华
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
求助各位大侠
本人在用TIM1定时器实现互补PWM输出时,需要CH1通道产生PWM波形,互补通道CH1N 一直是高电平。
现在的问题是CH1通道能产生想要的PWM波形,可互补通道CH1N 一直是低电平,这里该怎么配置让它是高电平呢?求指点,非常感谢!
见如下图片?红色是我希望的波形,实际上是下面的波形。
TIM_OCInitStructure.TIM_OCMode
= TIM_OCMode_T
TIM_OCInitStructure.TIM_OutputState
= TIM_OutputState_E
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_E
TIM_OCInitStructure.TIM_Pulse = CCR1_V //?è??? 1/4 ??±?
TIM_OCInitStructure.TIM_OCPolarity
TIM_OCPolarity_H
TIM_OCInitStructure.TIM_OCNPolarity
TIM_OCPolarity_H
TIM_OCInitStructure.TIM_OCIdleState
TIM_OCIdleState_S
TIM_OCInitStructure.TIM_OCNIdleState =
TIM_OCIdleState_R
这个是PWM设置,在通信事件触发的情况下,
TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
TIM_CCxNCmd(TIM1,TIM_Channel_1, TIM_CCxN_Disable);
11.JPG (14.77 KB, 下载次数: 7)
17:32 上传
在线时间13 小时
主题帖子精华
金牌会员, 积分 1102, 距离下一级还需 1898 积分
金牌会员, 积分 1102, 距离下一级还需 1898 积分
RE:STM32 用TIM1 产生互补PWM的问题?
强制拉高 或者拉低,函数库里有这个函数
在线时间53 小时
主题帖子精华
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
回复:STM32 用TIM1 产生互补PWM的问题?
回复第 2 楼 于 15:51:26发表:
强制拉高 或者拉低,函数库里有这个函数
真要是这么容易,我就不送200个积分咯,呵呵
在PWM产生方式下,是不能强制高或这低的,要不然CH1不能产生PWM波形了。只能时能或这禁能一个通道。我现在的问题是,怎么能在禁能的方式下,不是默认的低电平,而是产生高电平
在线时间53 小时
主题帖子精华
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
RE:STM32 用TIM1 产生互补PWM的问题?
顶起来,急求解决,谢谢啦
在线时间53 小时
主题帖子精华
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
RE:STM32 用TIM1 产生互补PWM的问题?
管理员,在吗?求解答!多谢啊
在线时间0 小时
主题帖子精华
新手上路, 积分 232, 距离下一级还需 -182 积分
新手上路, 积分 232, 距离下一级还需 -182 积分
RE:STM32 用TIM1 产生互补PWM的问题?
TIM_OCInitStructure.TIM_OCNPolarity&&= TIM_OCNPolarity_H& & //互补输出高电平有效
这样不行?
在线时间166 小时
主题帖子精华
金牌会员, 积分 1315, 距离下一级还需 1685 积分
金牌会员, 积分 1315, 距离下一级还需 1685 积分
RE:STM32 用TIM1 产生互补PWM的问题?
既然互不通道没有使用,不要把互补通道对应的引脚设置为复用模式GPIO_Mode_AF_PP,设置成通用输出模式不就行了,再用函数控制.
在线时间53 小时
主题帖子精华
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
回复:STM32 用TIM1 产生互补PWM的问题?
回复第 6 楼 于 22:46:35发表:
TIM_OCInitStructure.TIM_OCNPolarity&&= TIM_OCNPolarity_H& & //互补输出高电平有效
这样不行?
是的,我就是这么配置的,如果不是PWM模式,是可以强制高或者强制低的
在线时间53 小时
主题帖子精华
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
论坛元老, 积分 3657, 距离下一级还需 9996342 积分
回复:STM32 用TIM1 产生互补PWM的问题?
回复第 7 楼 于 20:04:03发表:
既然互不通道没有使用,不要把互补通道对应的引脚设置为复用模式GPIO_Mode_AF_PP,设置成通用输出模式不就行了,再用函数控制.
互补通道是使用的,CH1输出PWM,CH1N要输出有效或无效电平的。
在线时间166 小时
主题帖子精华
金牌会员, 积分 1315, 距离下一级还需 1685 积分
金牌会员, 积分 1315, 距离下一级还需 1685 积分
回复:STM32 用TIM1 产生互补PWM的问题?
TIM_CCxNCmd((TIM1, TIM_Channel_1, TIM_CCxN_Disable)不是已经使互补输出失能了吗?
站长推荐 /2
STM32粉丝狂欢节还剩最后一个月,最高单人可得5块开发板!11月中奖名单即将公布,请收到开发板的朋友好好学习!好好利用!
ST将于12月在北京/上海/深圳三地分别举办针对以太网(Ethernet)应用实战的线下培训。请尽快报名!
Tel: 3-8056
备案号: 苏ICP备号-2
Powered by后使用快捷导航没有帐号?
只需一步,快速开始
扫一扫,访问微社区
查看: 5038|回复: 1
STM32F4演示例程之带死区互补PWM输出
主题帖子精华
网站创始人&站长
兑换币11446
在线时间5578 小时
/************************************
& & 标题:死区互补PWM
& & 软件平台:IAR for ARM6.21
& & 硬件平台:stm32f4-discovery
& & 主频:168M
& & 描述:三对死区互补PWM、一路普通PWM
& && && & PE8 ----- TIM1_CH1N
& && && & PE9 ----- TIM1_CH1
& && && & PE10 ----- TIM1_CH2N
& && && & PE11 ----- TIM1_CH2
& && && & PE12 ----- TIM1_CH3N
& && && & PE13 ----- TIM1_CH3
& && && & PE14 ----- TIM1_CH4
& & author:小船
& & data:
*************************************/
#include &stm32f4xx.h&
void main ()
&&SCB-&AIRCR = 0x05AF0000 | 0x400;&&//中断优先级分组 抢占:响应=3:1
&&RCC-&AHB1ENR |= (1&&4); //打开GPIOE时钟
&&GPIOE-&MODER |= 0X2AAA0000;//PE8、9、10、11、12、13、14第二功能
& && &&&//推挽输出
&&GPIOE-&OSPEEDR |= 0x3fff0000;//速度100m
&&GPIOE-&PUPDR |= 0x;//上拉&&
&&//PE8、9、10、11、12、13、14第二功能AF1
&&GPIOE-&AFR[1] |= 0x;
&&RCC-&APB2ENR |= (1&&0); //打开TIM1时钟
&&TIM1-&PSC = 167; //对时钟168M进行168分频,使得计数频率为1M
&&TIM1-&ARR = 10000;&&//周期10ms
&&TIM1-&EGR |= 1; //产生一次更新事件
&&TIM1-&CCMR1 |= 0x6060;//PWM模式1
&&TIM1-&CCMR2 |= 0x6060;//PWM模式1
&&TIM1-&CCR1 = 8000;//设置占空比
&&TIM1-&CCR2 = 6000;
&&TIM1-&CCR3 = 4000;
&&TIM1-&CCR4 = 2000;
&&TIM1-&CCER |= 0x1//使能比较输出
&&TIM1-&CCMR1 |= 0x0808;//启动预装载
&&TIM1-&CCMR2 |= 0x0808;
&&TIM1-&BDTR|=1&&15;& & // 刹车使能位置1,开启所有输出通道
&&TIM1-&BDTR|=0xCD;& &&&// 死区时间设定
&&TIM1-&CR1 |= 1; //开始计时
&&while(1)
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子精华
常驻嘉宾, 积分 4729, 距离下一级还需 1271 积分
常驻嘉宾, 积分 4729, 距离下一级还需 1271 积分
在线时间282 小时
沙发,嘿嘿顶,正打算学32 的
特殊贡献奖章
为论坛做出了特殊贡献,发帖和在线时间较多
资源大师奖章
分享大量优秀资源
论坛骨干奖章
论坛骨干奖章
推广达人奖章
积极宣传本站,为本站带来更多的用户访问量
优秀版主奖章
活跃且尽责职守的版主
热心会员奖章
经常帮助其他会员答疑
论坛元老奖章
会员等级达到元老
在线王奖章
在线时间长,且活跃度高
活跃会员奖章
经常参与各类话题讨论,发贴较有主见
优秀会员奖章
注册后积极参与论坛讨论
Powered by如何用STM32的TIM1产生 带死区的互补PWM - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 6351|回复: 2
如何用STM32的TIM1产生 带死区的互补PWM
在线时间0 小时
主题帖子精华
新手上路, 积分 13, 距离下一级还需 37 积分
新手上路, 积分 13, 距离下一级还需 37 积分
小弟初学STM32,现想用定时器TIM1产生带死区的互补PWM脉宽 来驱动全桥逆变,之前是用调死区来调节占空比,但是这样占空比只能调节一点点,才几微妙,肯定各位大哥大姐指点一下,一个项目卡在这边折腾了好多天了。。。。
要产生的波形如图所示
(8.1 KB, 下载次数: 69)
08:35 上传
在线时间12 小时
主题帖子精华
金牌会员, 积分 1821, 距离下一级还需 1179 积分
金牌会员, 积分 1821, 距离下一级还需 1179 积分
RE:如何用STM32的TIM1产生 带死区的互补PWM
这应该是可以办到的,找下相关例程研究下
在线时间0 小时
主题帖子精华
新手上路, 积分 13, 距离下一级还需 37 积分
新手上路, 积分 13, 距离下一级还需 37 积分
RE:如何用STM32的TIM1产生 带死区的互补PWM
哎 如果是产生一路占空比可调的PWM,那很容易做到,书本上例子很多,但是现在要求互补,而且占空比必须可以变化很多,都不懂怎么做,期待高人指点下,,谢啦
站长推荐 /2
STM32粉丝狂欢节还剩最后一个月,最高单人可得5块开发板!11月中奖名单即将公布,请收到开发板的朋友好好学习!好好利用!
ST将于12月在北京/上海/深圳三地分别举办针对以太网(Ethernet)应用实战的线下培训。请尽快报名!
Tel: 3-8056
备案号: 苏ICP备号-2
Powered by 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
STM32之PWM资料(网上收集整理)
下载积分:1000
内容提示:STM32之PWM资料(网上收集整理)
文档格式:PDF|
浏览次数:2|
上传日期: 10:38:27|
文档星级:
该用户还上传了这些文档
STM32之PWM资料(网上收集整理)
官方公共微信STM32F103的高级定时器1带死区互补输出配置_旗威_新浪博客
STM32F103的高级定时器1带死区互补输出配置
void TIM1_PWMConfig()
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitS
TIM_OCInitTypeDef TIM_OCInitS
TIM_BDTRInitTypeDef TIM_BDTRInitS
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
GPIO_Config( GPIOA,
RCC_APB2Periph_GPIOA,
GPIO_Mode_AF_PP,
GPIO_Pin_8|GPIO_Pin_9);
GPIO_Config( GPIOB,
RCC_APB2Periph_GPIOB,
GPIO_Mode_AF_PP,
GPIO_Pin_13|GPIO_Pin_14);
TIM_TimeBaseInitStructure.TIM_Period=1799;​
​TIM_TimeBaseInitStructure.TIM_Prescaler=0;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState =
TIM_OutputState_E
TIM_OCInitStructure.TIM_OutputNState
=TIM_OutputNState_E
TIM_OCInitStructure.TIM_Pulse =0;
TIM_OCInitStructure.TIM_OCPolarity =
TIM_OCPolarity_H
TIM_OCInitStructure.TIM_OCNPolarity =TIM_OCNPolarity_H //
高电平为有效
TIM_OCInitStructure.TIM_OCIdleState =
TIM_OCIdleState_R
TIM_OCInitStructure.TIM_OCNIdleState =
TIM_OCIdleState_R
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
//TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState =
TIM_OutputState_E
TIM_OCInitStructure.TIM_OutputNState =
TIM_OutputNState_E
TIM_OCInitStructure.TIM_Pulse =0;
TIM_OCInitStructure.TIM_OCPolarity =
TIM_OCPolarity_H
TIM_OCInitStructure.TIM_OCNPolarity
=TIM_OCNPolarity_H
TIM_OCInitStructure.TIM_OCIdleState =
TIM_OCIdleState_R
TIM_OCInitStructure.TIM_OCNIdleState =
TIM_OCIdleState_R
TIM_OC2Init(TIM1,&TIM_OCInitStructure);
//TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);​
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_E
TIM_BDTRInitStructure.TIM_Break=TIM_Break_D//TIM_Break_E
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_H
TIM_BDTRInitStructure.TIM_DeadTime=28;
TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF;
TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_D//TIM_OSSIState_D//TIM_OSSIState_E
TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_D//TIM_OSSRState_D//TIM_OSSRState_E
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
TIM_ARRPreloadConfig(TIM1,ENABLE);
TIM_CtrlPWMOutputs(TIM1,ENABLE);//MOE=1,开启OC和OCN输出
TIM_Cmd(TIM1,ENABLE);
其他函数:
控制高级定时器某个通道及其反相通道单处输出或关闭
void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel,
uint16_t TIM_CCx)
void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel,
uint16_t TIM_CCxN)
输出波形演示:​
CH1、CH1N、CH2、CH2N同时输出
&CH1、CH1N、CH2打开,关闭CH2N的输出
博客等级:
博客积分:0
博客访问:1,480
关注人气:0
荣誉徽章:

我要回帖

更多关于 stm32f103 tim1 pwm 的文章

 

随机推荐