蓝桥杯嵌入式(G431RBT6):定时器双通道输出不同频率和占空比。

本文介绍了如何使用STM32G431RBT6的定时器在蓝桥杯嵌入式竞赛中实现双通道输出不同频率和占空比的波形。通过CubeMx配置定时器TIM3,设置输出比较模式,详细解析了配置过程和程序设计,最终展示了成功的波形输出结果。
摘要由CSDN通过智能技术生成


前言

在蓝桥杯嵌入式第十一届省赛题里,出现这样一个问题,一个定时器同时完成多路不同频率不同占空比的波形输出。
这个问题应该难倒了不少小伙伴吧。可能会遇到正负占空比跳动,波形频率跳动的问题。
笔者也是查阅了各种资料,进了很多坑,总结出来了一个比较完善的定时器配置和比较稳定的程序。
当然第十一届省赛这个问题对于G431也可以使用不同的定时器来完成PA6,PA7的波形输出。
闲话不多说,开始步入正题。


一、输出比较模式

笔者只是简单的进行一下讲解,有不懂的小伙伴,可以自行查阅相关资料。
在这里插入图片描述
我们需要输出比较模式是做什么的,首先需要明白TIMx_CCRx寄存器的作用,在输出比较模式下,TIMx_CNT里的数会周期性自动递增,当递增至TIMx_CNT寄存器的值与TIMx_CCRx的值相同时,根据TIMx_CCMRx寄存器和TIMx_CCER寄存器的设置,来决定此时是通道对应的GPIO口电平状态:
1,翻转,2,置成有效电平,3,置成无效电平。

在自动重载下,当TIMx_CNT的值与TIMx_ARR的值相同时,就会置零,继续周期性递增.

由此可以明白输出比较模式的下TIMx_CCRx的值的作用。即设置电平改变的时间点(说法有点不准确)。

注意:TIMx_ARR寄存器,TIMx_CCMRx寄存器和TIMx_CCER寄存器,的内容在CUBUMX初始化的时候进行设置,无需我们在程序里设置。
但是需要明白TIMx_CCRx寄存器作用。
不懂也没关系,看程序,配置,注释。

二、CubeMx配置

在这里插入图片描述
(上图)配置说明:
设置主频为170Mhz。可以输入170按回车,也可以按照图中进行配置。
在这里插入图片描述
(上图)配置说明:1,选择TIM3定时器,通道一,通道二,输出比较模式,内部时钟。
2,分频169。这样定时器频率=170000000(主频)/(169+1)=1000000。
即TIM3->CNT每秒递增1000000次,即每1us加1。
3,TIM3->ARR设置为0xfffff,即TIM3->CNT递增至0xffff时置0。然后继续从0递增。
4,自动装载

在这里插入图片描述
(上图)配置说明:模式选择Active level on match
笔者选择的这个模式下,当TIM3->CTN的值与TIM3->CCRX的相同时,电平会置成有效电平。

注意:笔者没有选择翻转模式Toggle on match
,因为翻转模式下电平可以从低到高,也可以从高到低,处理不当很容易出现正负占空比会出现颠倒问题。Toggle on match模式主要用于输出占空比%50的方波。

在这里插入图片描述

三、程序

结构体变量
注意:笔者建议变量最后都写在结构体里
1,代码简洁
2,易于查找和管理变量,鉴于keil5的代码自动补全功能。
3,不用为变量名的取名字而烦恼,不同的结构体变量的成员变量名可以使一样的哦。

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值