OpenEdv-开源电子网

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

新手求指导,占空比调节问题

[复制链接]

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-4-7
在线时间
8 小时
发表于 2013-4-17 12:24:39 | 显示全部楼层 |阅读模式

不管怎么改变脉宽值,波形都不变  


 void TIM2_Config(void)
{
 TIM_TimeBaseInitTypeDef  TIM2_TimeBaseStructure;//定义结构体
 TIM_OCInitTypeDef  TIM2_OCInitStructure;
 GPIO_InitTypeDef GPIO_InitStructure;

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA及功能复用IO时钟
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能TIM2时钟
 //GPIOA配置为:定时器2的PWM4个通道复用功能输出
   GPIO_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;//I/O时钟为50MHz
   GPIO_Init(GPIOA, &GPIO_InitStructure);//根据上面指定参数初始化GPIO结构体
 //定时器基本配置
 TIM2_TimeBaseStructure.TIM_Period =1000-1;//计数值为1000
 TIM2_TimeBaseStructure.TIM_Prescaler = 1440-1;//1440分频
 TIM2_TimeBaseStructure.TIM_ClockDivision = 0;//采样分频0
 TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
 TIM_TimeBaseInit(TIM2, &TIM2_TimeBaseStructure);

 TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//定时器配置为PWM1模式
 TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM输出比较极性高

 // PWM1模式通道1
 TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//通道1输出使能
 TIM2_OCInitStructure.TIM_Pulse =200;//脉宽值为200
 TIM_OC1Init(TIM2,&TIM2_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化TIM2
 TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR1上的预装载寄存器

 // PWM1模式通道2
 TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
 TIM2_OCInitStructure.TIM_Pulse =50;//脉宽值为400
 TIM_OC2Init(TIM2, &TIM2_OCInitStructure);
 TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);//使能TIM2在CCR2上的预装载寄存器
 
 // PWM1模式通道3
 TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
 TIM2_OCInitStructure.TIM_Pulse =75;
 TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
 TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);

 // PWM1模式通道4
 TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
 TIM2_OCInitStructure.TIM_Pulse =100;
 TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
 TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);

 TIM_ARRPreloadConfig(TIM2, ENABLE);//使能TIM2在ARR上的预装载寄存器
 TIM_ClearITPendingBit(TIM2, TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3|TIM_IT_CC4);//预先清除所有中断位
 /* 配置输出比较通道1中断*/
 TIM_ITConfig(TIM2,TIM_IT_CC1,ENABLE);
 
 TIM_Cmd(TIM2, ENABLE);//使能定时器2 


 

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-17 14:23:38 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-4-7
在线时间
8 小时
 楼主| 发表于 2013-4-17 15:50:35 | 显示全部楼层
很单纯的改变TIM2_OCInitStructure.TIM_Pulse的值
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-21 05:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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