20377|6

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

TIM1 PWM问题求助 请高手一定看看 很急 [复制链接]

我用TIM1的六路控制电机      假如TIM1的  1通道   和1反通道    我失能1反通道   想让它为高电平 是在哪设置啊            现在是使能总是低电平,请懂的大侠一定帮忙看看
此帖出自stm32/stm8论坛

最新回复

mark。。。刚好要用到死区  详情 回复 发表于 2014-12-20 21:45
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
初始化时设置好极性和有效电平就行了,输出高低是比较的结果。
此帖出自stm32/stm8论坛
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 huo_hu 的帖子

你帮我看看  我怎么找不到如何设置有效电平啊  我用的是固件库函数   刹车先不管  
TIM_TimeBaseStructure.TIM_Prescaler = 8; //4.5KHZ
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = PWMOUTPUT_PERIOD;                //占空比为:CCRx/(TIM_Period+1)
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;        //重装次数为0
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_Pulse = PWMOUTPUT_DUTY;                 //设置CCR1值
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_Low;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //通道1配置

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 = 80;                                                 //死区时间为13.8ns
  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);
此帖出自stm32/stm8论坛
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
/*******************************************TIMX,初始化为+-计数的pwm输出******************************/
void TIMX_PWM_Init(void) {
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;       
        //桥数据
        Power_Bridge_Init();
        TIM_DeInit(TIM1);TIM_DeInit(TIM8);
/*********************************中断优先级设置************************************/
          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //4-4优先级       
        NVIC_StructInit(&NVIC_InitStructure);
          NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQChannel;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //抢先优先级
          NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                //子优先级
          NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_IRQChannel;
        NVIC_Init(&NVIC_InitStructure);
//clock       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1|RCC_APB2Periph_TIM8, ENABLE);
//tim1:ch1234,pa8、9、10、11 ch123n,pb13、14、15 etr,pa12 bkin,pb12   
//tim8:ch1234,pc6、7、8 、9  ch123n,pa7 pb0 pb1  etr,pa0  bkin,pa6
        GPIOX_Init(GPIOA,(GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10),GPIO_Mode_AF_PP);
        GPIOX_Init(GPIOB,(GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15),GPIO_Mode_AF_PP);
        GPIOX_Init(GPIOC,(GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8),GPIO_Mode_AF_PP);
//定时器pwm模式
        TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);                //其它默认值
          TIM_TimeBaseStructure.TIM_Period = (DEFAULT_PERIOD-1);           //重载定时器周期,ARPE=1时更新事件时//
          TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                    //定时器时钟分频数,下次更新事件时采用//
          TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    //设置时钟分割//
        //1下计数设置中断,指比较中断(如果不用比较中断,123都可以)
        //这个必须的,会触发更新
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;
          TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0000;                 //重复计数
        //Tim1
          TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //执行设置//
        TIM_ARRPreloadConfig(TIM1,ENABLE);                 //使能与装载Period
          TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
        TIM_ARRPreloadConfig(TIM8,ENABLE);                 //使能与装载Period
/*        通道工作模式  */               
        TIM_OCStructInit(&TIM_OCInitStructure);        //其它默认值
        //110:PWM模式1- 在向上计数时,一旦TIMx_CNT         //在向下计数时, 一旦TIMx_CNT>TIMx_CCR1 时通道1 为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;        //输出极性0:高电平有效
        TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;        //补极性
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出
//        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;       
        TIM_OCInitStructure.TIM_Pulse = 0x200;        //123初值
        TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //TIM1_OCIdleState选择空闲状态下的非工作状态(MOE=0时设置TIM1输出比较空闲状态)
        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;//OIS1N
          TIM_OC1Init(TIM1, &TIM_OCInitStructure);
        TIM_OC1FastConfig(TIM1, TIM_OCFast_Enable);
        TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);                //通道预装载使能
          TIM_OC2Init(TIM1, &TIM_OCInitStructure);
        TIM_OC2FastConfig(TIM1, TIM_OCFast_Enable);
        TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
          TIM_OC3Init(TIM1, &TIM_OCInitStructure);
        TIM_OC3FastConfig(TIM1, TIM_OCFast_Enable);
        TIM_OC3PreloadConfig(TIM1,TIM_OCPreload_Enable);

          TIM_OC1Init(TIM8, &TIM_OCInitStructure);
        TIM_OC1FastConfig(TIM8, TIM_OCFast_Enable);
        TIM_OC1PreloadConfig(TIM8,TIM_OCPreload_Enable);                //通道预装载使能
          TIM_OC2Init(TIM8, &TIM_OCInitStructure);
        TIM_OC2FastConfig(TIM8, TIM_OCFast_Enable);
        TIM_OC2PreloadConfig(TIM8,TIM_OCPreload_Enable);
          TIM_OC3Init(TIM8, &TIM_OCInitStructure);
        TIM_OC3FastConfig(TIM8, TIM_OCFast_Enable);
        TIM_OC3PreloadConfig(TIM8,TIM_OCPreload_Enable);
/*        通道4为普通输出,用来输出过0         
        TIM_OCStructInit(&TIM_OCInitStructure);        //其它默认值
        TIM_OCInitStructure.TIM_Pulse = 0x20;        //123初值       
          TIM_OC4Init(TIM1, &TIM_OCInitStructure);  */
/*  CCxE CCxNE OCxM设置为非预装载的 */
          TIM_CCPreloadControl(TIM1,DISABLE);  
          TIM_CCPreloadControl(TIM8,DISABLE);
        TIM_ClearFlag(TIM1,TIM_FLAG_Update|TIM_FLAG_CC1|TIM_FLAG_CC2|TIM_FLAG_CC3|TIM_FLAG_CC4);
        TIM_ClearFlag(TIM8,TIM_FLAG_Update|TIM_FLAG_CC1|TIM_FLAG_CC2|TIM_FLAG_CC3|TIM_FLAG_CC4);          
        TIM_ITConfig(TIM1,TIM_IT_Update, ENABLE);
        TIM_ITConfig(TIM8,TIM_IT_Update, ENABLE);
        TIM_CtrlPWMOutputs(TIM1, ENABLE);
        TIM_CtrlPWMOutputs(TIM8, ENABLE);
        Power1.Run_Status|=POWER_RUN_FLAG;        Power2.Run_Status|=POWER_RUN_FLAG;
        TIM_Cmd(TIM1, ENABLE);TIM_Cmd(TIM8, ENABLE); //时器开始计数
}
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 huo_hu 的帖子

实在感谢   先谢再看
此帖出自stm32/stm8论坛
 
 
 

回复

102

帖子

0

TA的资源

一粒金砂(中级)

6
 
:rose:
此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

7
 
mark。。。刚好要用到死区
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表