一、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输出的频率是相同的,但占空比可以不同!

matlab中pwm占空比计算代码,详解STM32的PWM输出及频率和脉宽(占空比)的计算相关推荐

  1. pwm一个时间单位_详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!...

    一.stm32的pwm输出引脚是使用的IO口的复用功能. 二.T2~T5这4个通用定时器均可输出4路PWM--CH1~CH4. 三.我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并 ...

  2. java中math的方法_Java中Math类常用方法代码详解

    近期用到四舍五入想到以前整理了一点,就顺便重新整理好经常见到的一些四舍五入,后续遇到常用也会直接在这篇文章更新... public class Demo{ public static void mai ...

  3. android收藏功能demo,Android使用Realm数据库实现App中的收藏功能(代码详解)

    前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据: 文件存储数据: SQLite数据 ...

  4. python批量删除文件名中的下划线-代码详解

    删除文件名中的下划线 代码示例: 代码详解 对于文件名中出现的"_",如(500_600),将下划线消除,替换为(500600) 代码示例: import osdef rename ...

  5. tensorflow中的seq2seq的代码详解

    seq2seq模型详解中我们给出了seq2seq模型的介绍,这篇文章介绍tensorflow中seq 2seq的代码,方便日后工作中的调用.本文介绍的代码是版本1.2.1的代码,在1.0版本后,ten ...

  6. MATLAB中 figure() 函数的用法详解-图文

    作者按:Matlab中的 figure() 函数主要用于建立图形窗口 用法一 默认参数 >>figure; %默认参数 用法二 和其他图窗函数配合使用,用于建立新窗口显示图形 >&g ...

  7. LoRa节点开发:6、代码详解修改发射和接收信道(频率)

    本文来源公众号[物联网思考] 本文主要结合LoRaNode SDK v4.4.2和LoRaWAN规范1.0.3来展开. 查看<lorawan_regional_parameters_v1.0.3 ...

  8. TensorFlow中cnn-cifar10样例代码详解

    TensorFlow是一个支持分布式的深度学习框架,在Google的推动下,它正在变得越来越普及.我最近学了TensorFlow教程上的一个例子,即采用CNN对cifar10数据集进行分类.在看源代码 ...

  9. Matlab中图例注释函数legend详解

    转自:http://www.matlabfan.com/thread-8-1-3.html 当在一个坐标系上画多幅图形时,为区分各个图形,Matlab提供了图例的注释说明函数.其格式如下: legen ...

  10. java中什么是接口代码详解

    12.接口 普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范!自己无法写方法-专业的约束!约束和实现分离:面向接口编程~ 接口就是规范,定义的是一组规则,体现了现实世界中 ...

最新文章

  1. R语言多因素有交互方差分析(Two-Way ANOVA)实战:拟合多因素有交互方差分析模型、分析不同分组的差异TukeyHSD、多因素有交互方差分析的结果总结
  2. RHEL6系列更换epel源
  3. Javascript 基础-------this关键字
  4. 微软向马斯克的人工智能项目OpenAI投资10亿美元
  5. ODBC学习(一)基本理论
  6. centos 7.2 mysql 允许_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定
  7. SpringBoot中Bean按条件装配
  8. python 地址_python 解析地址 | 学步园
  9. 吸引人才的十大顶尖运营机制
  10. 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析
  11. tf入门-池化函数 tf.nn.max_pool 的介绍
  12. linux log变色
  13. 程序员必须知道的一些事
  14. 英语形容词的排列顺序
  15. c语言switch函数的作用,c语言的switchcase语句
  16. Linux 删除文件实现回收站功能
  17. Android格子视图的另外一种实现方式之Images3LinearLayout(9宫格/九宫格)
  18. 完数(难度系数:半颗星)
  19. python中列表概念_详解python列表
  20. 情人节程序员用HTML网页表白【可爱的节日贺卡ui动画特效】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

热门文章

  1. Centos7安装iNode客户端
  2. ext2文件系统之ext2_lookup函数源代码分析
  3. STM32_WS2811驱动
  4. 计算机网络(自顶向下方法)-网络层
  5. 华为 eNSP模拟器安装教程
  6. PMP学习系列2:PMP报名考试相关细则
  7. 【Mimics】口腔牙齿三维重建
  8. 【从零开始学架构-李运华】01|架构到底是指什么?
  9. c语言中取反位运算的作用,C语言位运算符及作用与或异或取反左移和右移
  10. 2022年低压电工考试题模拟考试平台操作