stm32 生成PWM信号

本文介绍了如何使用STM32的高级定时器TIM1生成PWM信号,重点解析了相关寄存器配置,包括ARR、PSC、CCMR1、CCER和BDTR等,详细阐述了PWM频率计算、模式选择、死区时间设置以及占空比的调整,旨在帮助开发者深入了解STM32 PWM工作原理。
摘要由CSDN通过智能技术生成

STM32的通用定时器和高级定时器都能产生PWM信号,其中每个高级定时器可以产生7路的PWM(有3对是可以互补的),每个通用定时器都能产生4路PWM,这样算下来,STM32f103系列最多能产生30路PWM。
其实用库函数配置STM32并不难,可以很容易就生成PWM信号,但是如果想要了解深入一些,至少要大概知道某些比较重要的参数是由哪几个寄存器控制,这样其实在项目开发中调试起来也要有头绪一些。
这里就用高级定时器TIM1举例,产生一组互补带死区的PWM信号,如果高级定时器弄清楚了通用定时器更就不在话下了。为了便于总结,我事先写好了一个程序,用KEIL软件进行调试,然后看寄存器的值,这样更直观一些。从这个图上可以看出高级定时器一共有20个寄存器,其中CCMR1_Output和CCMR1_Input是一个寄存器,CCMR2_Output和CCMR2_Input是一个寄存器,这里只是分开表示。
这里写图片描述

ARR(auto-reload register)自动重装载寄存器,当定时器的时钟开启时这个值就默认为0xFFFF,图里的0x000004AF是程序里配置的,一个PWM脉冲周期为1200(这个1200只是一个计数值,不是实际的时间值)
PSC(prescaler)预分频寄存器,存储的是预分频值,这里分频值为3
PWM的频率为72M/(1200*3)=20KHz
CCMR1(Capture/Comprare

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值