pwm一个时间单位_详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!...
一、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输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!...相关推荐
- pwm一个时间单位_详解PWM原理、频率与占空比
来源:csdn,作者:Z小旋 链接:https://blog.csdn.net/as480133937 什么是PWM 脉冲宽度调制(PWM),是英文"Pulse Width Modulati ...
- pwm一个时间单位_解读:什么是PWM“死区”?
PWM是脉宽调制,在电力电子中,最常用的就是整流和逆变.这就需要用到整流桥和逆变桥.对三相电来说,就需要三个桥臂.以两电平为例,每个桥臂上有两个电力电子器件,比如IGBT.这两个IGBT不能同时导通, ...
- pwm一个时间单位_时间的换算单位是怎么换算的啊,秒,毫秒,微妙,纳秒等
展开全部 常见时间单位换算: 1秒=1000毫秒(ms) 1秒=1,000,000 微秒62616964757a686964616fe58685e5aeb931333366303836(μs) 1秒= ...
- pwm一个时间单位_「硬见小百科」什么是PWM“死区”?
原标题:「硬见小百科」什么是PWM"死区"? PWM是脉宽调制,在电力电子中,最常用的就是整流和逆变.这就需要用到整流桥和逆变桥.对三相电来说,就需要三个桥臂.以两电平为例,每个桥 ...
- pwm一个时间单位_RK3308——RGB调色灯三路PWM驱动
10.1 硬件基础 在我们的开发板上集成了一颗RGB灯组,引脚连接着主控的三路PWM输出,因此我们可以通过三路PWM输出进行调色的功能,硬件原理图如下: 10.2 内核设备树 我们把设备树补丁文件放在 ...
- pwm一个时间单位_脉冲的单位是什么
展开全部 脉冲是没有单位的. 脉冲是相对于连续信号在整个信号周期内短时间发生的e69da5e887aa3231313335323631343130323136353331333366306465信号, ...
- pwm一个时间单位_通过PWM进行数模转换的滤波电路分析计算
数字处理芯片将数字转成模拟量可以通过处理器的D/A模块以及PWM模块实现. PWM是一种周期固定,而高低电平占空比可调的方波信号. PWM通过简单的RC滤波网络可以得到与信号占空比成线性关系的直接电压 ...
- pwm一个时间单位_PTO PWM要点
脉冲输出 ( PLS ) 指令被用于控制在高速输入 ( Q0.0 和 Q0.1 ) 中提供的 " 脉冲串输出 " ( PTO ) 和 " 脉宽调制 " ( PW ...
- pwm一个时间单位_PTO PWM
脉冲输出 ( PLS ) 指令被用于控制在高速输入 ( Q0.0 和 Q0.1 ) 中提供的 " 脉冲串输出 " ( PTO ) 和 " 脉宽调制 " ( PW ...
最新文章
- 【Windows10nbsp;IoT开发系列】“Hello,World!”指导
- 初探Firewalld
- LightSpeed 的Left Join Bug解决方案
- ARM64的启动过程之(五):UEFI
- 11.5 vmstat:虚拟内存统计
- 实现根据id查询房源数据的dubbo服务
- 如何成为优秀的前端工程师
- 使用Jackson将一个对象转换成一个JSON字符串
- iOS App 崩溃报告符号化,.ips崩溃报告文件分析
- mysql临时表怎么显示_如何查看MySQL临时表的说明?
- (MATLAB)使用梯度下降进行一元线性回归
- python中scrapy加请求头_Python爬虫之scrapy框架随机请求头中间件的设置
- 电子商务入门、实操、行业分析及公司案例等精彩系列问答有哪些?
- linux 改变输出端口,linux – 更改ssh端口后的Fail2ban设置
- 信修修 | 如何一眼辨别显示器好坏?电脑选机必看!
- 国开电大 管理心理学 形考任务1-4
- Docker 磁盘空间使用分析与清理 解决磁盘空间不足
- python 多列排序_python sorted多列排序
- Java 编程问题:七、Java 反射类、接口、构造器、方法和字段
- 基于PHP的自动化办公OA系统
热门文章
- iOS 8那些有意思的API和服务
- MySQL 性能调优专题一(索引数据结构详解)
- 微信小程序数据过滤(filter)方法
- 解读综合布线12大热点技术趋势
- Win7x64中使用VS调试WEB项目报“ORA-06413: 连接未打开”错误解决方法
- matplotlib,numpy自己动手安装
- 404 – File or directory not found.
- IT服务台的进化(2)--企业外部服务台的优缺点
- reactjs redux入门完整版示例:store reducer getState dispatch subscribe action
- reactjs中收集表单数据:非受控组件和受控组件