OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3561|回复: 2

stm32高级定时器1ch1和ch2输不出p?w?m

[复制链接]

4

主题

10

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-7-15
在线时间
0 小时
发表于 2015-12-8 14:03:24 | 显示全部楼层 |阅读模式
5金钱
程序如下,看一下是什么问题
/*
******************************************************************************
*         任务名称: TIM1_PWM_Init
*         任务说明: TIM1 PWM部分初始化
*         参数一: 自动重装值 
*         参数二: 时钟预分频数 
*         返回值: 无
******************************************************************************
*/
void TIM1_PWM_Init(u16 Arr, u16 Psc)
{  
GPIO_InitTypeDef GPIO_InitStructure2;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef   TIM_OCInitStructure;
    TIM_BDTRInitTypeDef TIM_BDTRInitStructure;

//Timer1完全重映射
GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);

    /*配置PWM输出端口 */
/********TIM1_CH1,TIM1_CH1N 引脚配置*********/        
GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_AF_PP;                 //设置为复用浮空输出
GPIO_Init(GPIOE, &GPIO_InitStructure2);

/*定时器基本配置 */
TIM_TimeBaseStructure.TIM_Period = Arr;             // 自动重装载寄存器的值
    TIM_TimeBaseStructure.TIM_Prescaler = Psc;             // 时钟预分频数
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;    // 采样分频
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数  TIM_SelectOnePulseMode
    TIM_TimeBaseStructure.TIM_RepetitionCounter = TIM_CounterMode_Down;// 0; //重复寄存器,用于自动更新pwm占空比  /* 重复计数器无效 */     ?????                    
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

/* PWM正向输出配置 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;               //设置为pwm1输出模式
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_Low;//TIM_OCNPolarity_High;      //比较输出极性
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;   //使能该通道输出
TIM_OCInitStructure.TIM_Pulse = 500;     //脉冲宽度 TIM_SetCompare1(TIM1, 5000); TIM_OC1Init(TIM1,&TIM_OCInitStructure);
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
TIM_OC2Init(TIM1,&TIM_OCInitStructure);   
  TIM_OC3Init(TIM1,&TIM_OCInitStructure);    
  TIM_OC4Init(TIM1,&TIM_OCInitStructure);  

// TIM_ClearFlag(TIM1,TIM_FLAG_CC1); //清除中断 
// TIM_ClearFlag(TIM1,TIM_FLAG_CC2); //清除中断 
// TIM_ClearFlag(TIM1,TIM_FLAG_CC3); //清除中断 
// TIM_ClearFlag(TIM1,TIM_FLAG_CC4); //清除中断 


TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);   //使能TIMx在CCR1上的预装载寄存器
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);   //使能TIMx在CCR2上的预装载寄存器
  TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);   //使能TIMx在CCR3上的预装载寄存器
  TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);   //使能TIMx在CCR4上的预装载寄存器
  TIM_ARRPreloadConfig(TIM1, ENABLE);                 //使能TIMx在ARR上的预装载寄存器
// // TIM_ITConfig(TIM1,TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);// TIM_IT_Update , ENABLE);     //使能更新中断  
    TIM_Cmd(TIM1,ENABLE);                                               //打开TIM1 //使能TIM外设    
    /* 输出pwm打开 */
    TIM_CtrlPWMOutputs(TIM1, ENABLE);                                   //PWM输出使能,一定要记得打开  //主输出使能 

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2013-6-23
在线时间
59 小时
发表于 2015-12-9 12:00:55 | 显示全部楼层
定时器、GPIO时钟没有使能
回复

使用道具 举报

10

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2015-12-18
在线时间
73 小时
发表于 2015-12-18 16:51:30 | 显示全部楼层
请问你的主函数里PWM是怎么控制的?
是用的这些么?
TIM_SetAutoreload(TIM1,100); 
TIM_SetCompare1(TIM1,30);
TIM_SetCompare2(TIM1,70);
TIM_SetCompare3(TIM1,50);
TIM_SetCompare4(TIM1,90);
无话可说
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 10:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表