当前位置:网站首页>8.STM32F407之HAL库——PWM笔记
8.STM32F407之HAL库——PWM笔记
2022-08-10 05:14:00 【并非凑巧】
使用STM32CubeMX配置工程+MDKARM编写代码实现PWM功能
一、PWM简介
脉冲宽度调制(Pulse width modulation,PWM)技术。
是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说就是对脉冲宽度的控制。
在单片机上就是通过控制引脚电平的周期性通断,来产生规律的矩形波。并且周期和脉冲的宽度都是可调的。
占空比:是指在一个脉冲循环内,通电时间相对于总时间所占的比例。(高电平时间/一个周期的时间)
占空比就是对脉冲宽度的描述。
二、PWM相关寄存器
脉冲宽度调制模式可以生成一个信号
TIMx_ARR 寄存器值决定信号频率
TIMx_CCRx 寄存器值决定占空比
TIMx_CCMRx 寄存器中的 OCxM 位决定PWM模式,110表示模式1,111表示模式2。
MODE1,小于比较值时候为有效电平
MODE2,大于比较值时候为有效电平
TIMx_CR1 寄存器中的 OPM 位,设置为 1,可选择单脉冲模式。
三、STM32CubeMX配置
STM32的PWM功能是基于定时器的,这是因为产生PWM波需要计时(计数),其中包括PWM波的周期,以及产生不同占空比的高电平所需要的不同时间。
先使能TIM14定时器
单脉冲模式:计数器可以在一个激励信号的触发下启动,并可在一段可编程的延时后产生一个脉宽可编程的脉冲。
复用PF9引脚为定时器14通道1
设置PF9的标签
使能NVIC
和普通定时器一样计算定时时间,产生周期性信号并自动重装载。
PWM模式:MODE1,小于比较值时候为有效电平。MODE2,大于比较值时候为有效电平
Pulse:设置比较值。有效电平所占的计数,可以调节占空比
如果enable,任何写入TIMx_CCRx事件到来,都不会打断当前计数周期,只能等到计完数了(更新事件),才把TIMx_CCRx传送至当前计数寄存器。如果disable,任何写入TIMx_CCRx事件到来,都会打断当前计数周期,TIMx_CCRx的值传送至当前计数寄存器。
CH polarity:通道极性,如果是HIGH,说明高电平是有效电平(输出高电平时候表示有效电平)。
该程序实现的是,使用TIM14的通道1调节占空比实现LED的闪烁。调节不同的占空比可以改变LED的闪烁。
四、所用HAL库函数
//在初始化部分使用:启动PWM
HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1); //启动PWM
//在需要调节占空比的时候使用,改变占空比
__HAL_TIM_SetCompare(&htim14,TIM_CHANNEL_1,9900);
五、参考资料
《STM32F4xx中文参考手册》
《STM32F4开发指南-HAL库版本_V1.2》
边栏推荐
- `id` bigint(20) unsigned NOT NULL COMMENT 'Database primary key',
- EasyGBS connects to mysql database and prompts "can't connect to mysql server", how to solve it?
- 一篇文章带你搞懂什么是幂等性问题?如何解决幂等性问题?
- 安芯电子IPO过会:年营收4亿 汪良恩兄弟持股61.6%
- 大佬们,运行cdc后oracle归档日志20分钟增长3G是正常现象吗
- 重要转型升级
- 暑期学前作业
- flinkcdc 读取pgsql 的时间被放大了 有大佬知道咋回事吗 gmt_create':1
- 干货 | 查资料利器:线上图书馆
- How does flinksql write that the value of redis has only the last field?
猜你喜欢
随机推荐
开发智能硬件过程中需要掌握的方法之经典
接口文档进化图鉴,有些古早接口文档工具,你可能都没用过
Using the DatePicker date control, Prop being mutated: "placement" error occurs
安芯电子IPO过会:年营收4亿 汪良恩兄弟持股61.6%
万字总结:分布式系统的38个知识点
Advanced Feature Selection Techniques in Linear Models - Based on R
线性代数(四)
FPGA工程师面试试题集锦41~50
How Current Probes Set Oscilloscope Parameters
How to choose the right oscilloscope probe in different scenarios
flinksql怎么写redis的value只有最后一个字段?
Rpc接口压测
Introduction to curl command
awk of the Three Musketeers of Shell Programming
深度学习之-01
What are the common commands of mysql
Attention candidates for the soft exam! The detailed registration process for the second half of 2022 is coming!
Consulting cdc 2.0 for mysql does not execute flush with read lock. How to ensure bin
如何用Apifox 的智能Mock功能?
oracle rac 11g安装执行root.sh时报错









