STM32实现灯的PWM输出以及定时器输入捕获频率和占空比

该博客介绍了如何使用STM32通过寄存器实现PWM输出,控制频率1KHz到20KHz,占空比5%到90%,并详细阐述了按键控制PWM频率和占空比、定时器输入捕获功能。同时,讨论了全映射输入捕获的实现,以及更新中断中可能出现的误差问题,适合初学者理解和学习。
摘要由CSDN通过智能技术生成

寄存器版本的实现
程序中的频率和占空比:频率控制在1KHZ----20KHZ,步进值为1KHZ,占空比控制在5%----90%内,步进值为5%。
程序的主要功能:
1.按键一:控制四个灯的PWM输出频率和占空比
2.按键二:改变频率大小。
3.按键三:选择一个通道。
4.按键四:改变按键三选择通道的占空比。
5.按键五:实现输入捕获频率和占空比(组内成员提供了关键思想)。
说明:
1.本次为了方便实现占空比的值为整数,默认给ARR的值+1,还希望不要误解;
2.代码里面输入捕获的实现用了全映射,通道三用来捕获的IO口被之前的按键占用,若读者想实现定时器的四路输入捕获,还请自行改变IO口,方便使用。
3.本次用更新中断来获取捕获的值,在按键发生时给与想要的输出,偶尔会出现误差比较大的情况,希望大家能提出建议或者给一些思想。
各个实现的主要思想(主要各定时器的通道配置不再给出,主要给思想和算法):
1.


static	u16 led0pwmval=0;
static	u16 led1pwmval=0;
static  u16 led2pwmval=0;
static  u16 led3pwmval=0;
static  u16 f=1;
static  u8 PWM_Select_Result=0;

void FOUR_PWM_case1(u16 arr,u16 psc)
{
   if(led0pwmval<=((arr+1)*0.9) && led1pwmval<=(arr+1)*0.9 &&led2pwmval
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值