STM32定时器PWM输出呼吸灯实验

PWM简介

脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。

步骤

使用CT117E蓝桥杯开发板
经查询TIM3_CH3在完全重映射情况下为PC8引脚对应板子上的LED1在这里插入图片描述
STM32中文参考手册8.3.7

  1. 使能时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  1. 初始化GPIO
	GPIO_pwm_Init.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_pwm_Init.GPIO_Pin=GPIO_Pin_8;
	GPIO_pwm_Init.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOC,&GPIO_pwm_Init);
  1. 重映射引脚
	GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);
  1. 初始化定时器
	TIM3_CH3_PWMInit.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM3_CH3_PWMInit.TIM_CounterMode=TIM_CounterMode_Up ;
	TIM3_CH3_PWMInit.TIM_Period=PWM_Period;
	TIM3_CH3_PWMInit.TIM_Prescaler=PWM_Prescaler;
	TIM_TimeBaseInit(TIM3,&TIM3_CH3_PWMInit);
  1. 初始化OC输出
	TIM3_CH3_OCInit.TIM_OCMode=TIM_OCMode_PWM1;
	TIM3_CH3_OCInit.TIM_OCPolarity=TIM_OCPolarity_Low;
	TIM3_CH3_OCInit.TIM_OutputState=TIM_OutputState_Enable;
	TIM3_CH3_OCInit.TIM_Pulse=50;
	TIM_OC3Init(TIM3,&TIM3_CH3_OCInit);
  1. 使能定时器
	TIM_Cmd(TIM3,ENABLE);

备注

  1. PWM两种模式
  • PWM模式一:向上计数时如果计数值(CNT)小于设定值(CCRX)则位有效电平,向下计数时如果计数值大于设定值时为无效电平。(计数值小于设定值为有效)
  • PWM模式二:向上计数时如果计数值(CNT)小于设定值(CCRX)则位无效电平,向下计数时如果计数值大于设定值时为有效电平。(计数值大于设定值为有效)
  1. 中央对齐三种模式
  • 中央对齐模式1:计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向下计数时被设置。
  • 中央对齐模式2:计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向上计数时被设置。
  • 中央对齐模式3:计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,在计数器向上和向下计数时均被设置。

注:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。

  1. 两种输出极性
  • TIM_OCPolarity_High有效电平为高电平
  • TIM_OCPolarity_Low有效电平为低电平
  1. 一些函数
  • TIM_OCXPreloadConfig()
    如果此函数使能,那么OCX通道的比较值(CCRX)在改变后立即生效否则将在下一个周期生效。
  • TIM_SetCompareX(TIMY)
    改变TIMY通道X的比较值(CCRX)
  • TIM_OCInitTypeDef
    其中
    TIM_OutputNState
    TIM_OCNPolarity
    TIM_OCNIdleState与互补输出有关没用到
    TIM_OCIdleState检测定时器是否空闲没用到
  • TIM_OC2PolarityConfig()
    可以设置输出极性

还没有做定时器中断加PWM的实验

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值