蓝桥杯嵌入式——高级定时器输入捕获&输出比较

输入捕获

一:普通输入捕获模式

输入捕获的两大核心功能:

1.当外部产生有效触发时,捕获定时器的数值,挪到捕获寄存器里面。

2.产生中断,类似于外中断,比如,上升沿产生中断。

同一时刻,某一个引脚只能作为输入/输出

一旦一个引脚是输入/输出,该定时器所有引脚都是输入/输出

通道1的tim_ti1fp2可以给到通道二,通道2的tim_ti2fp1可以给到通道1,   通道3,4同理


 

最终捕获的值给IC1PS寄存器,因为是与运算符所以当CC1E使能时才有效

CC1S:选择外部信号来自于哪(不能同时为0)

01:通道1tim1         10:通道2tim2     11:外部定时器trc

最常用的流程:

通道1——>滤波——>选择上升沿还是下降沿触发——>选择分频——>直接产生捕获信号得到计数值

当产生捕获后,会把捕获到的值放入捕获寄存器(compare shadow register)里

二:PWM输入捕获模式

主要功能:测量周期和高电平所占时间得到占空比

占空比 = 周期/高电平所占时间

测量一次占空比需要占用两个通道

流程:PWM波从TIM_CH1通道进来——>通过滤波和边沿检测产生tim_ti1fp1(给到通道1)和tim_ti1fp2(给到通道2)——>把值分别存到C1和C2寄存器

当第一次上升沿产生时会让计数器清0开始自加,C1寄存器存上0——>当第一次下降沿产生时会让C2存上计数器的值(假设计数值为10),则存上10——>当第二次上升沿产生时让C1寄存器存上当前计数值(假设当前计数值为15),则存上15,此时周期和高电平时间就得到了

输出比较

        用比较值和计数值进行实时比较产生参考电平tim_oc1ref,参考电平通过后边的电路产生输出信号

提前在比较寄存器里写好一个值,会把CNT的数值和比较寄存器的数值实时比较

假设我们把比较寄存器写入80,ARR为100,当计数值在0~80时会输出低电平,计数值在80~100时则输出高电平

模式设置

计数值和比较值比较完后进入(Ouput selector)输出模式控制寄存器   

OC1CE寄存器里写数值选择模式

0000:冻结模式。定时器作为普通定时器使用,不使用输出比较功能。

0001/0010:(比较输出模式1)匹配时输出有效/无效电平模式。如递增计数器,比较寄存器内部数值提前设定好,当计数器相等或者大于比较值时,匹配,产生/不产生有效信号输出。当计数器值小于比较值时,不产生/产生有效信号输出。

0011:(比较输出模式2)电平翻转模式。假设比较值为50,当计数值从0递增到50时引脚产生高低电平的跳变,引脚状态翻转(高变低,低变高)。步进电机控制常用的模式。

0100/0101:(强制输出模式)强置为无效/有效电平模式。不管比较寄存器和计数器数值,强制设置比较寄存器输出高或低电平。

0110/0111:(PWM模式)PWM1和PWM2模式。

当CC1S有1的时候(01 10 11)当输入捕获来使用,当CC1S为00时当输出比较来使用

PWM模式

PWM(脉冲宽度调制)模式可以产生一个PWM信号,由TIMx_ARR寄存器确定频率(周期)、由TIMx_CCRx寄存器确定占空比,在递增和递减模式当计数值与捕获比较值相等时会产生一次中断

OC1CE寄存器写0110时为PWM1模式:

PWM模式1:在递增计数时,TIMx_CNT(计数器)<TIMx_CCRx(捕获比较寄存器)时OCxREF为有效电平,否则为无效电平;在递减计数时,TIMx_CNT>TIMx_CCRx时OCxREF为无效电平,否则为有效电平。

OC1CE寄存器写0111时为PWM2模式:

 PWM模式2:在递增计数时,TIMx_CNT<TIMx_CCRx时OCxREF为无效电平,否则为有效电平在递减计数时,TIMx_CNT>TIMx_CCRx时OCxREF为有效电平,否则为无效电平。

中心对齐模式

中心对齐模式1:递减中断

中心对齐模式2:递增中断

中心对齐模式3:递增递减都中断 产生的比较中断位置不一样

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值