蓝桥杯嵌入式学习STM32之输入捕获

真的
每天都要写博客我已经要吐了
我快坚持不下去了
啊啊啊啊

难受


今日知识点

  1. 区别
    &按位与
    &&逻辑与
  2. 优先级关系
    !>&&>||
  3. cl:互联型产品,stm32f105/107系列
    vl:超值型产品,stm32f100系列
    xl:超高密度产品,stm32f101/103系列
    ld:低密度产品,FLASH小于64K
    md:中等密度产品,FLASH=64 or 128
    hd:高密度产品,FLASH大于128

工作流程

在这里插入图片描述
TI1接收到输入信号(此处可以考虑是否要滤除一些短暂的脉冲,毛刺),然后交给边沿监测(你可以设置检验上边沿还是下边沿),然后选择是否要映射(你可以将数据传到IC1,也可以映射到IC2;同理IC1通道里也有可能是来自TI2的边沿检测),最后那个分频器是指监测一次边沿信号触发一次中断还是检测两次触发一次中断。

好像蛮简单的。

细节部分

第一部分:
TIMx_CCMR1
这个寄存器控制MODE,也就是模式。1低八位控制通道1,高八位控制2;CCMR2控制通道三、四。
下面以通道一为例:
在这里插入图片描述
重点说下位7:4
fCK_INT根据前面的博客知道是72MHz
fDTS由72分频而来,这个设置在CR1寄存器设置。
以N=8为例讲解一下滤波:
监测到电平变化以后连续采样8次,如果每次都是高电平说明信号有效,传递给下面确定是上升沿。这样可以滤除那些高电平脉宽低于8 个采样周期的脉冲信号,从而达到滤波的效果。
第二部分:
TIMx_CCER
这里位0应该写错了,没想到官方中文还有错误
在这里插入图片描述
CC1P自己选择是检测上升沿还是下降沿。

第三部分:
通过CCMR
选择是否映射
第四部分:
通过CCMR寄存器
选择分频系数
通过CCER寄存器
选择是否使能

涉及到的寄存器

TIMx_ARR(自动重装载)
TIMx_PSC(预分频)
TIMx_CCMR1(见上第一部分)
TIMx_CCER(见上第二部分)
TIMx_DIER(使能中断)
TIMx_CR1(使能TIM)
TIMx_CCR1(储存)

涉及到的库函数

输入捕获通道初始化函数:

void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
typedef struct
{
   
  uint16_t TIM_Channel; //捕获通道1-4   
  uint16_t TIM_ICPolarity; //捕获极性
  uint16_t TIM_ICSelection; //映射关系
  uint16_t TIM_ICPrescaler; //分频系数
  uint16_t TIM_ICFilter;  //滤波器
} TIM_ICInitTypeDef;
通道极性设置独立函数:

void TIM_OCxPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity)
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值