新手必看!!附源码!!STM32通用定时器输出PWM

一、什么是PWM?

PWM(脉冲宽度调制)是一种用于控制电子设备的技术。它通过调整信号的脉冲宽度来控制电压的平均值。PWM常用于调节电机速度、控制LED亮度、产生模拟信号等应用。

二、PWM的原理

PWM的基本原理是通过以一定频率产生的脉冲信号,通过调整脉冲的宽度(占空比)来模拟电压的不同电平。占空比是指脉冲高电平的时间占整个周期的比例。通过调整占空比,可以在输出端产生不同的电平,从而实现对电机、LED等设备的精确控制。

例如,对于一个50%占空比的PWM信号,脉冲的高电平时间占整个周期的一半,这将导致输出电平的平均值为一半的电压。通过调整占空比,你可以在0%到100%的范围内控制输出电平的变化。

三、PWM模式以及输出PWM原理

ARR: 自动重装载寄存器的值。

CCRx: 捕获/比较寄存器的值。

PWM波周期或频率由ARR决定,PWM波占空比由CCRx决定

(1)PWM模式1

在向上计数时,一旦CNT<CCRx 时输出为有效电平,否则为无效电平。

在向下计数时,一旦CNT>CCRx 时输出为无效电平,否则为有效电平。

如:

当CNT < CCRx,IO输出1。

当CNT >= CCRx,IO输出0。

当CNT <=CCRx,IO输出1。

当CNT > CCRx,IO输出0。

(2)PWM模式2

在向上计数时,一旦CNT>CCRx 时输出为有效电平,否则为无效电平。

在向下计数时,一旦CNT<CCRx 时输出为无效电平,否则为有效电平。

如:
当CNT < CCRx,IO输出0。

当CNT >= CCRx,IO输出1。

当CNT <= CCRx,IO输出0。

当CNT > CCRx,IO输出1。

四、配置PWM输出实验步骤

实验内容:将PA6复用为TIM3通道1,输出pwm。注:stm32的pwm输出引脚是使用的IO口的复用功能。
1.步骤:

(1)使能定时器3时钟。 RCC->APB1ENR |= 1 << 1;

(2)开启复用输出功能 。

3.设置定时器的重装载值以及预分频。

4.设置PWM模式。

5.使能通道。

6.使能定时器。

2.具体代码:

c 复制代码
    void PWM_Init_TIM3_CH1(u16 arr, u16 psc)
{
     //1、使能TIM3时钟   
    RCC->APB1ENR |= 1 << 1; 
    
    //2、配置对应引脚(PA6)的复用输出功能
    GPIOA->CRL &= 0XF0FFFFFF;//PA6清0
    GPIOA->CRL |= 0X0B000000;//复用功能输出(推挽50MHz输出)
    GPIOA->ODR |= 1 << 6;//PA6上拉   

    //3、设定计数器主动重装值及是不是分频
    TIM3->ARR = arr;//设定计数器主动重装值(决定PWM的频率)
    TIM3->PSC = psc;//预分频器 0为不分频
    
    //4、设置PWM的模式
    TIM3->CCMR1 |= 7 << 4;//CH1 PWM2模式 
    TIM3->CCMR1 |= 1 << 3;//CH1预装载使能   
     
    //5、输出使能设置
    TIM3->CCER  |= 1 << 0;//输入/捕获1输出使能
    
    //6、主动重装载预装载允许位(ARPE) 及 定时器 使能
    TIM3->CR1 = 0X0080;//ARPE使能
    TIM3->CR1 |= 0X01;//使能定时器3
}
相关推荐
嵌入式杂谈1 小时前
STM32中断编程详解:配置外部中断和中断服务例程
stm32·单片机·嵌入式硬件
光子物联单片机2 小时前
传感器模块编程实践(三)舵机+超声波模块融合DIY智能垃圾桶模型
stm32·单片机·嵌入式硬件·mcu
嵌入式杂谈4 小时前
STM32中断编程指南:NVIC和中断优先级
stm32·单片机·嵌入式硬件
xiaobuding_QAQ5 小时前
自用Proteus(8.15)常用元器件图示和功能介绍(持续更新...)
单片机·嵌入式硬件·学习·proteus
zxfly20137 小时前
STM32的DMA技术介绍
stm32·单片机·嵌入式硬件
CV金科12 小时前
蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)
stm32·单片机·嵌入式硬件·算法·蓝桥杯
嵌入式详谈14 小时前
基于STM32的智能风扇控制系统设计
stm32·单片机·嵌入式硬件
小小怪大梦想14 小时前
RTC实时时钟
stm32·单片机·嵌入式硬件
水饺编程18 小时前
【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-2
linux·嵌入式硬件·fpga开发
电子科技圈18 小时前
IAR全面支持国科环宇AS32X系列RISC-V车规MCU
人工智能·嵌入式硬件·mcu·编辑器