STM32单片机实战开发笔记-PWM波输出频率及占空比配置【wulianjishu666】

本文介绍了如何在STM32F10x单片机中使用TIM2的PWM模式控制LED亮度,包括GPIO配置、TIM2初始化以及PWM模式1的设置,通过示例代码展示了如何实现PWM边沿对齐和向上计数配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单片机物联网开发资料:
链接:https://pan.baidu.com/s/1XzodQuML7CqZ4ZKinDGKkg?pwd=bgep 
提取码:bgep

===========================================

PWM模块测试

  1. 功能描述

脉冲宽度调制模式:

  1. PWM边沿对齐模式:
  1. 向上计数配置

当TIMX_CR1寄存器中的DIR为低的时候执行向上计数,下面是一个PWM1模式1的例子,当TIMx_CNT < TIMX_CCRx时PWM信号OCxREF为高,否则为低。如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为“1”,如果比较值为0,则OCxREF保持为“0”,

  1. 向下计数配置

当TIMx_CR1寄存器的DIR位为高时执行向下计数

在PWM模式1,当TIMx_CNT > TIMx_CCRx时OCxREF为低,否则为高,如果TIMx_CCRx中的比较值大于TIMx_ARR中的自动重装载值,则OCxREF保持为“1”,该模式下不能长生0%的PWM波形

  1. PWM中央对齐模式

  1. 主要特性

3、通用IO

TIMx

CH1

CH2

CH3

CH4

TIM1

PA8

PA9

PA10

PA11

TIM2

PA0

PA1

PA2

PA3

TIM3

PA6

PA7

PB0

PB1

TIM4

PB6

PB7

PB8

PB9

3、硬件电路

  1. 软件代码

/********************************************************************

* 文件 :pwm.c

* 版本 :V1

* 描述 :使用PWM来调节LED的亮度

* 说明 :使用TIM2的CH2通道,设置TIM2为PWM模式,输出PWM脉冲

********************************************************************/

#include"stm32f10x_lib.h"

/******************************************************

*函数名称:void GPIO_Configuration(void)

*函数功能:GPIO的配置,配置PA1为TIM2的PWM输出

*入口参数:无

*出口参数:无

******************************************************/

void GPIO_Configuration(void)

{

        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);       // 使能APB2外设GPIOC时钟

       RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);          // Enable TIM2

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                //PA1  定时器的通道2

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

        GPIO_Init(GPIOA,&GPIO_InitStructure);

}

/*****************************************************

*函数名称:void TIM_Configuration(void)

*函数功能:TIM2的配置

*入口参数:无

*出口参数:无

*****************************************************/

void TIM_Configuration(void)

{

         TIM_TimeBaseInitTypeDef        TIM_TimeBaseStructure;

         TIM_OCInitTypeDef TIM_OCInitStructure;

         

        TIM_TimeBaseStructure.TIM_Prescaler = 0 ;         //72M       

        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up ;          //计数向上

        TIM_TimeBaseStructure.TIM_Period = 0xff;                                               //分频值

        TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                 //分割

        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

       

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                                 //PWM1模式(边沿对齐模式)

        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //CH2通道有效

        TIM_OCInitStructure.TIM_Channel = TIM_Channel_2;                            //通道2

        TIM_OCInitStructure.TIM_Pulse = 0xff ;                                                         //占空比

        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;             //输出极性为高电平

        TIM_OC2Init(TIM2,&TIM_OCInitStructure);

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

        TIM_Cmd(TIM2,ENABLE);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值