当前位置:网站首页>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》
边栏推荐
- When oracle cdc, set the parallelism to 2 and the number of slots to 1, and the final task has only one tm. Is it because oracle does not support concurrency
- 【Pei Shu Theorem】CF1055C Lucky Days
- 软考考生注意!2022年下半年报名详细流程来了!
- MySQL simple tutorial
- 安芯电子IPO过会:年营收4亿 汪良恩兄弟持股61.6%
- Shell编程三剑客之awk
- Why are negative numbers in binary represented in two's complement form - binary addition and subtraction
- oracle cdc时,设置并行度2插槽数1,最终任务只有一个tm,是不是因为oracle不支持并发
- 【静态代理】
- 2022 security officer C certificate test and simulation test in shandong province
猜你喜欢
随机推荐
Joomla vulnerability reproduced
应用在智能触摸遥控器中的触摸芯片
【无标题】
如何从代码层提高产品质量
干货 | 查资料利器:线上图书馆
The sword refers to Offer 033. Variation array
栈与队列 | 用栈实现队列 | 用队列实现栈 | 基础理论与代码原理
解决“#231-D declaration is not visible outside of function”告警方法
如何模拟后台API调用场景,很细!
FPGA engineer interview questions collection 21~30
Joomla漏洞复现
Shield Alt hotkey in vscode
剑指Offer 033.变位数组
FPGA工程师面试试题集锦31~40
mysql常用命令有什么
Guys, the test in the idea uses FlinkCDC SQL to read Mysql data and write it into Kafka. The code creates
Stacks and Queues | Implementing Queues with Stacks | Implementing Stacks with Queues | Basic Theory and Code Principles
Stacks and Queues | Valid parentheses, delete all adjacent elements in a string, reverse Polish expression evaluation, maximum sliding window, top K high frequency elements | leecode brush questions
How to get the last day of a month
Attention candidates for the soft exam! The detailed registration process for the second half of 2022 is coming!








