OpenEdv-开源电子网

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

PWM波,我用的定时器通道2,怎么一直输出低电平啊

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
33
金钱
33
注册时间
2016-5-10
在线时间
14 小时
发表于 2016-7-10 16:20:10 | 显示全部楼层 |阅读模式
#include "pwm.h"
void TIM2_PWM_Init(u16 arr,u16 psc)
{
        GPIO_InitTypeDef GPIO_InitStruct;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
        TIM_OCInitTypeDef TIM_OCInitStruct;
       
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO ,ENABLE);
       
  GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;                        //PA1
  GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;                //50MHZ的输出速度
  GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;                  //复用推挽输出
  GPIO_Init(GPIOA,&GPIO_InitStruct);

  TIM_TimeBaseInitStruct.TIM_Prescaler=arr;                        //设置作为时钟频率除数的预分频值
  TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;   //设置为向上计数
  TIM_TimeBaseInitStruct.TIM_Period=psc;                               //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
  TIM_TimeBaseInitStruct.TIM_ClockDivision=0;           //设置时钟分割
  TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

  TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;              //设置为PWM模式1
  TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;  //比较输出使能1
  TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;       //TIM比较输出极性高
  TIM_OCInitStruct.TIM_Pulse=0;
  TIM_OC2Init(TIM2,&TIM_OCInitStruct);

  TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);  //使能预装载值

  TIM_Cmd(TIM2, ENABLE);       //使能TIM2

  TIM_SetCompare2(TIM2,0);   
}       


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

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2013-11-27
在线时间
518 小时
发表于 2016-7-10 16:27:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-7-10
在线时间
5 小时
发表于 2016-7-10 19:35:24 | 显示全部楼层
你最后一句写的有问题,  TIM_SetCompare2(TIM2,0);    你里面写的0不就一直输出低电平了么?
回复 支持 反对

使用道具 举报

10

主题

254

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2015-10-17
在线时间
145 小时
发表于 2016-7-10 20:15:29 | 显示全部楼层
你没有改变电平跳变的值,程序的结果无非就是一直高或者一直低。给他设定一个改变的值就可以了。可以把  TIM_SetCompare2放在主函数然后一直改变,你就会得到呼吸灯的效果了,就像原子的PWM实验一样。
开着单片机翱翔在天空
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 18:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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