0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解STM32的PWM输出及频率和脉宽的计算——寄存器配置六步曲!

GReq_mcu168 来源:玩转单片机 2020-07-09 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、stm32的pwm输出引脚是使用的IO口的复用功能。

二、T2~T5这4个通用定时器均可输出4路PWM——CH1~CH4。

三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!)。

四、给出了PWM频率和占空比的计算公式。

步骤如下:

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的模式(有1和2两种模式,区别在于输出电平极性相反),根据需求选一种即可

注:TIMX_CCMR1决定CH1~CH2路,TIMX_CCMR2决定CH3~CH4路。

//TIM3->CCMR1 |=6 << 4;//CH1 PWM1模式 

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

下面给出TIM3_CH1及TIM3_CH2的PWM输出代码:

void PWM_Init_TIM3_CH1(u16 arr, u16 psc)
{

//1、使能TIM3时钟

RCC->APB1ENR |= 1 << 1;//使能TIM3时钟

//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
}

void PWM_Init_TIM3_CH2(u16 arr, u16 psc)
{
RCC->APB1ENR |= 1 << 1;//使能TIM3时钟

GPIOA->CRL &= 0X0FFFFFFF;//PA7清0
GPIOA->CRL |= 0XB0000000;//复用功能输出(推挽50MHz输出)
GPIOA->ODR |= 1 << 7;//PA7上拉

TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)
TIM3->PSC = psc;//预分频器 不分频

TIM3->CCMR1 |= 7 << 12;//CH2 PWM2模式
TIM3->CCMR1 |= 1 << 11;//CH2预装载使能

TIM3->CCER |= 1 << 4;//输入/捕获2输出使能
TIM3->CR1 = 0X0080;//ARPE使能
TIM3->CR1 |= 0X01;//使能定时器3
}

频率:

//Fpwm = 72M / ((arr+1)*(psc+1))(单位:Hz)
占空比:

//duty circle = TIM3->CCR1 / arr(单位:%)

注:本文方法的一个定时器4个通道的pwm输出的频率是相同的,但占空比可以不同!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5894

    浏览量

    226601
  • STM32
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374662

原文标题:详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析SN74SSTU32864E:25位可配置寄存器缓冲

    )的SN74SSTU32864E是一款25位可配置寄存器缓冲,具有SSTL 18输入和输出,属于Widebus+™系列。它专为1.7V至1.9V (V {CC}) 操作而设计,在DD
    的头像 发表于 04-23 11:30 177次阅读

    Renesas ICSSSTUAF32865A:DDR2 28位可配置寄存器缓冲详解

    Renesas ICSSSTUAF32865A:DDR2 28位可配置寄存器缓冲详解 在 DDR2 内存模块设计领域,Renesas 的 ICSSSTUAF32865A 28 位可
    的头像 发表于 04-14 09:25 424次阅读

    PI74SSTVF16857 14位寄存器缓冲:特性与应用详解

    PI74SSTVF16857 14位寄存器缓冲:特性与应用详解 在电子设计领域,选择合适的缓冲对于确保电路的稳定运行至关重要。今天,我们就来深入了解一下Pericom Semico
    的头像 发表于 03-27 13:40 167次阅读

    74LV164:8位串行输入并行输出移位寄存器的深度剖析

    的 74LV164 8 位串行输入并行输出移位寄存器。 文件下载: 74LV164.pdf 一、概述 74LV164 是一款功能强大的移位寄存器,其显著特点是能在 1.0V 至 5.5V 的
    的头像 发表于 03-13 14:45 268次阅读

    74HC164:8位串行输入并行输出移位寄存器的详细解析

    下载: 74HC164.pdf 一、概述 74HC164是一款功能强大的移位寄存器,能接受2.0V至6.0V的电源电压范围。它具备门控串行输入(DSA和DSB)和并行数据输出(Q0至Q7)。其CP
    的头像 发表于 03-13 14:05 557次阅读

    SN74SSTVF16857 14位寄存器缓冲:设计与应用详解

    SN74SSTVF16857 14位寄存器缓冲:设计与应用详解 在电子设计领域,寄存器缓冲是不可或缺的组件,它能有效处理数据传输和信号处
    的头像 发表于 02-10 14:05 293次阅读

    SN74SSTUB32866:25位可配置寄存器缓冲的设计与应用

    SN74SSTUB32866:25位可配置寄存器缓冲的设计与应用 在电子设计领域,对于高速数据传输和处理的需求日益增长,可配置寄存器缓冲
    的头像 发表于 02-09 17:45 1179次阅读

    探索SN74SSTEB32866:25位可配置寄存器缓冲的卓越性能

    探索SN74SSTEB32866:25位可配置寄存器缓冲的卓越性能 在硬件设计的广阔领域中,一款优秀的寄存器缓冲能为整个系统带来显著的性
    的头像 发表于 02-09 16:05 250次阅读

    探索IDT74SSTUBF32866B:DDR2的25位可配置寄存器缓冲

    位1:1或14位1:2可配置寄存器缓冲,工作电压范围为1.7V - 1.9V VDD。它的所有时钟和数据输入都符合SSTL_18的JEDEC标准,控制输入为LVCMOS,输出则是经
    的头像 发表于 01-08 16:30 388次阅读

    探索IDT74SSTUBF32866B:DDR2的25位可配置寄存器缓冲

    1.7 - 1.9V VDD电压运行的25位1:1或14位1:2可配置寄存器缓冲。它的时钟和数据输入与JEDEC标准的SSTL_18兼容,控制输入为LVCMOS,输出则是经过优化的1
    的头像 发表于 12-24 16:30 508次阅读

    Renesas IDT74SSTUBF32866B:DDR2的25位可配置寄存器缓冲详解

    Renesas IDT74SSTUBF32866B:DDR2的25位可配置寄存器缓冲详解 在DDR2内存模块的设计中,一款合适的寄存器缓冲
    的头像 发表于 12-23 15:55 702次阅读

    HbirdV2-SoC自带pwm配置介绍

    1 队伍介绍 本篇主要介绍蜂鸟HbirdV2-SoC自带外设PWM配置 2 PWM寄存器介绍 在芯来的e203官方手册中,外设部分对PWM
    发表于 10-30 06:53

    PWM信号是如何控制舵机的?

    逻辑 舵机的控制依赖于特定频率PWM 信号,关键参数如下: PWM 信号频率:固定为
    的头像 发表于 09-29 10:48 1672次阅读

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    Texas Instruments SN74HCT595/SN74HCT595-Q1 8位移位寄存器包含8位串进并出移位寄存器,向8位D类存储寄存器馈送信号。存储寄存器具有并行 3 状
    的头像 发表于 09-19 14:31 1232次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    如何理解无刷电机中的六步换向?

    无刷电机中的六步换向是一种用于无刷直流电机(BLDC)的换相控制策略,它主要通过电子开关控制电机绕组的通电顺序,从而实现电机的旋转。以下是对无刷电机中六步换向的详细理解: 一、六步换向的基本原理 无
    的头像 发表于 07-23 07:39 2231次阅读