完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PWM——脉宽调制技术,是一种非常常用的数字信号,常用在对电压和电流的控制中,如直流电机驱动控制、呼吸灯控制等。在单片机开发中,会PWM的产生和控制是必要的,这里我们借助STM32CubeMX生成一个产生频率为1KHz、占空比为50%的工程。
首先创建STM32CubeMX工程,并配置好时钟和下载模式。具体可见第一个STM32工程 然后我们就正式开始配置PWM 首先要明确一点,PWM是有频率和占空比(一个周期中高电平所占的百分比)的,况且频率和占空比是可调的,要实现这些就得借助定时器,STM32除了基本定时器外都能产生PWM。 其中,通用定时器可以产生4路PWM,而高级定时器可以产生8路PWM,其中的四路为互补输出。 在自己对应的通道里面选择PWM Genration CH1 配置好PWM输出后就要设置频率和占空比 在Parameter Settings中设置好Prescaler(预分频系数)、Counter Period(重装载值)、Pulse(脉冲时长), 我一般习惯将PSC设置为主频-1,这样分频后一个周期刚好是1us,然后将ARR设置为1000-1,这样每个周期就是1ms,频率也就为1KHz。而Pulse设置为占空比,设置为500,刚好为1000的一半,则占空比为50%。 至此,PWM输出的配置就已经完成了,生成代码下进单片机中,但是并没有产生PWM波,因为Cube在生成代码时,有很多外设初始化完后默认是关闭的,需要我们手动开启。 代码如下: MX_GPIO_Init(); MX_TIM1_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); //开启定时器1的通道1的PWM输出 /* USER CODE END 2 */ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1649 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
994 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
693 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1613 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
543浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 12:17 , Processed in 0.955754 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号