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

本文转自网络,版权归原作者,如果您觉得不好,请留言联系我们删除!

来源链接:http://blog.csdn.net/akunainiannian/article/details/24316143

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

  1. pwm一个时间单位_详解PWM原理、频率与占空比

    来源:csdn,作者:Z小旋 链接:https://blog.csdn.net/as480133937 什么是PWM 脉冲宽度调制(PWM),是英文"Pulse Width Modulati ...

  2. pwm一个时间单位_解读:什么是PWM“死区”?

    PWM是脉宽调制,在电力电子中,最常用的就是整流和逆变.这就需要用到整流桥和逆变桥.对三相电来说,就需要三个桥臂.以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT.这两个IGBT不能同时导通, ...

  3. pwm一个时间单位_时间的换算单位是怎么换算的啊,秒,毫秒,微妙,纳秒等

    展开全部 常见时间单位换算: 1秒=1000毫秒(ms) 1秒=1,000,000 微秒62616964757a686964616fe58685e5aeb931333366303836(μs) 1秒= ...

  4. pwm一个时间单位_「硬见小百科」什么是PWM“死区”?

    原标题:「硬见小百科」什么是PWM"死区"? PWM是脉宽调制,在电力电子中,最常用的就是整流和逆变.这就需要用到整流桥和逆变桥.对三相电来说,就需要三个桥臂.以两电平为例,每个桥 ...

  5. pwm一个时间单位_RK3308——RGB调色灯三路PWM驱动

    10.1 硬件基础 在我们的开发板上集成了一颗RGB灯组,引脚连接着主控的三路PWM输出,因此我们可以通过三路PWM输出进行调色的功能,硬件原理图如下: 10.2 内核设备树 我们把设备树补丁文件放在 ...

  6. pwm一个时间单位_脉冲的单位是什么

    展开全部 脉冲是没有单位的. 脉冲是相对于连续信号在整个信号周期内短时间发生的e69da5e887aa3231313335323631343130323136353331333366306465信号, ...

  7. pwm一个时间单位_通过PWM进行数模转换的滤波电路分析计算

    数字处理芯片将数字转成模拟量可以通过处理器的D/A模块以及PWM模块实现. PWM是一种周期固定,而高低电平占空比可调的方波信号. PWM通过简单的RC滤波网络可以得到与信号占空比成线性关系的直接电压 ...

  8. pwm一个时间单位_PTO PWM要点

    脉冲输出 ( PLS ) 指令被用于控制在高速输入 ( Q0.0 和 Q0.1 ) 中提供的 " 脉冲串输出 " ( PTO ) 和 " 脉宽调制 " ( PW ...

  9. pwm一个时间单位_PTO PWM

    脉冲输出 ( PLS ) 指令被用于控制在高速输入 ( Q0.0 和 Q0.1 ) 中提供的 " 脉冲串输出 " ( PTO ) 和 " 脉宽调制 " ( PW ...

最新文章

  1. 【Windows10nbsp;IoT开发系列】“Hello,World!”指导
  2. 初探Firewalld
  3. LightSpeed 的Left Join Bug解决方案
  4. ARM64的启动过程之(五):UEFI
  5. 11.5 vmstat:虚拟内存统计
  6. 实现根据id查询房源数据的dubbo服务
  7. 如何成为优秀的前端工程师
  8. 使用Jackson将一个对象转换成一个JSON字符串
  9. iOS App 崩溃报告符号化,.ips崩溃报告文件分析
  10. mysql临时表怎么显示_如何查看MySQL临时表的说明?
  11. (MATLAB)使用梯度下降进行一元线性回归
  12. python中scrapy加请求头_Python爬虫之scrapy框架随机请求头中间件的设置
  13. 电子商务入门、实操、行业分析及公司案例等精彩系列问答有哪些?
  14. linux 改变输出端口,linux – 更改ssh端口后的Fail2ban设置
  15. 信修修 | 如何一眼辨别显示器好坏?电脑选机必看!
  16. 国开电大 管理心理学 形考任务1-4
  17. Docker 磁盘空间使用分析与清理 解决磁盘空间不足
  18. python 多列排序_python sorted多列排序
  19. Java 编程问题:七、Java 反射类、接口、构造器、方法和字段
  20. 基于PHP的自动化办公OA系统

热门文章

  1. iOS 8那些有意思的API和服务
  2. MySQL 性能调优专题一(索引数据结构详解)
  3. 微信小程序数据过滤(filter)方法
  4. 解读综合布线12大热点技术趋势
  5. Win7x64中使用VS调试WEB项目报“ORA-06413: 连接未打开”错误解决方法
  6. matplotlib,numpy自己动手安装
  7. 404 – File or directory not found.
  8. IT服务台的进化(2)--企业外部服务台的优缺点
  9. reactjs redux入门完整版示例:store reducer getState dispatch subscribe action
  10. reactjs中收集表单数据:非受控组件和受控组件