STM32定时器输出PWM
STM32定时器输出PWM
我们设置ARR值,就是设置CNT的上限,设置CCRX的值就是设置了一个临界点,CNT是一直随时间变化而变化的,当CNT>CCRX的时候输出 高/低电平 当CNT<CCRX的时候输出相反的电平,当CNT达到上限时,下一刻就变成0了。又开始CNT小于或者大于两种状态。
CNT从0到ARR是一个周期
CNT<CCRX输出高/低
CNT>CCRX输出低/高
只要TIM不关闭,CNT就一直循环上面两个状态。这样就形成了PWM
PWM周期:ARR决定
PWM占空比:CCRX决定
STM32定时器TIM3使用PWM模式
代码中相关寄存器和一些时钟的配置:
1:打开TIM3时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
2:因为想使用PB5作为输出脚所以打开复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3:设置TIM3 CH2的部分映射
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
AFIO->MAPR&=0XFFFFF3FF;
AFIO->MAPR|=1<<11;PA7-->>PB5
4:使能GPIOB,设置GPIO_PB5为复用推挽输出设置GPIO的速率为最大50MHZ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_INIT;
GPIO_INIT.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_INIT.GPIO_Pin=GPIO_Pin_5;
GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_INIT);
5:设定计数器自动重装值,预分频器值,设置TIM CH2为PWM模式,预装载使能,输出使能,计数使能
TIM3->ARR=25; //设定计数器自动重装值
TIM3->PSC=72; //预分频器不分频
TIM3->CCMR1|=7<<12; //CH2 PWM2 模式
TIM3->CCMR1|=1<<11; //CH2 预装载使能
TIM3->CCER|=1<<4; //OC2 输出使能
TIM3->CR1=0x0080; //ARPE 使能
TIM3->CR1|=0x01; //使能定时器 3
6:我们可以通过改变CCR2的值设置PWM占空比
TIM3->CCR2=8;
7:可以通过改变ARR值改变PWM周期
TIM3->ARR=25; //设定计数器自动重装值
总结:这个可以把之前的用延迟做的PWM改成用通用定时器做的。因为定时器做的PWM不占用主循环,硬件自动输出。我们只要改变寄存器的值就可以控制PWM。软件延迟做的话,需要占用主循环,不能做别的事情。交流学习的可以+2197358160一起学习。
STM32定时器输出PWM相关推荐
- stm32 定时器输出PWM原理及工作原理+控制舵机
1.PWM的工作原理 2.PWM的内部运作机制 3.PWM的模式 模块一 边沿对齐模式 模块二 中央对齐模式 4.自动加载的预加载寄存器 5.定时器输出PWM结构体讲解 6.定时器输出PWM库函数讲 ...
- STM32 定时器输出pwm的频率计算方法 PWM 频率检测方法 直流电机的位置控制
调节频率: 定时器重载值 = 定时器分频后的频率 / 最终输出的频率 调节占空比: /* 功能:改变指定定时器指定通道的pwm的频率和占空比 参数:htim:定时器句柄chanel: 通道duty_c ...
- STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值
参考:stm32 定时器输出PWM原理及工作原理+控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_4601 ...
- stm32定时器输出pwmIO口模拟pwm——呼吸灯
文章目录 前言 一.pwm(脉冲宽度调制) 1.基本原理 2.PWM的优点 3.PWM波的控制方法 二.定时器的相关介绍 1.stm32定时器 2.通用定时器计数模式 3.定时器的基本工作原理 三.定 ...
- STM32学习笔记:通用定时器输出PWM
脉冲宽度调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字输出 对模拟电路进行控制的一种非常有效的控制技术,常用于控制Led灯的亮度.电机转速等. STM32 的定时 ...
- STM32通用定时器输出PWM
1 .TIMx简介 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成. 它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM). 使用定时器预分 ...
- 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果
嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...
- STM32f103C8定时器输出PWM波信号
利用stm32高级定时器输出PWM,模拟呼吸灯的效果带刹车功能.由于没有示波器查看输出的pwm波形图,所以本次实验使用普通直流电机模拟的. 本文章为学习笔记,其中有些地方解释的不是那么的好,即本笔记可 ...
- STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期
STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期 目录 STM32CubeMX | 使用STM32定时器的PWM输入模式测量脉冲宽度和周期 1.介绍 2.STM32C ...
最新文章
- python mysql库对比_mysqlclient和PyMySQL对比
- 【LaTeX】E喵的LaTeX新手入门教程(6)中文
- spark | scala | 线性代数库Breeze学习
- CF1598E-Staircases【计数】
- .net MVC路由
- 贵!iPhone 11系列维修费用出炉 最高的可以入手一部华为P30 Pro了…
- Jsoup获取动态js生成的内容
- 【Clickhouse】ClickHouse REST API(HTTP接口)及Engine引擎的使用
- 原生App vs 移动Web App : 你如何选择
- 豆瓣250信息爬取及保存到excel中
- agent常见处理问题的处理
- 扶桑之伤 作者:长铗
- Android使用字体代替图标
- HCIP(华为高级网络安全工程师)(第五天)(OSPF协议1)
- FastDFS集群环境搭建(五)FastDFS监控器fdfs_monitor
- The type initializer for ‘Gdip‘ threw an exception. (centos)
- 地下城与勇士(DNF)洛兰副本(洛兰、洛兰深处、比尔马克帝国试验场、悲鸣洞穴)(童年的回忆)
- 关于获取VMware软件各个版本的永久激活密钥(附虚拟机挂机再恢复后黑屏的解决方法)...
- PHP常驻进程异常,PHP 多进程 解决难题(常驻进程问题)
- d转换简单结构数组为C值数组
热门文章
- 人体姿势估计论文:Simple and Lightweight Human Pose Estimation及其PyTorch实现
- PDF压缩(全图片PDF压缩)
- Flutter之路由跳转(上)
- Mp3标签IDV1以及ID3V2的解析类
- 【论文笔记】SSCDNet:弱监督语义场景变化检测模型
- 小程序、公众号开发报code been used(40163)或invalid code(40029)错误,解决方案--之--搞清楚微信的登录机制,保存登录状态!!!
- [转贴] 网络硬盘“G宝盘”使用体验
- C#\WPF高仿QQ音乐V12.8界面篇《2》
- vue列表显示时间、电子字体引入
- 天气通android2.1,今日天气通APP