stm32---定时器输入捕获

STM32 输入捕获工作过程(通道1为例)在这里插入图片描述
一句话总结工作过程:通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。
流程步骤:
步骤1:设置输入捕获滤波器(以可编程的频率采集多少次有效电平,若每次都为有效电平,则说明时是一次有效触发,就会触发捕获)
步骤2:设置输入捕获极性(指定上升沿捕获还是下降沿捕获)
步骤3:设置输入捕获映射通道(指定哪个通道,1~4)
步骤4:设置输入捕获分频器(假如是上升沿捕获,那么是每多少次边沿触发一次捕获)
步骤5:捕获到有效信号可以开启中断(捕获时开启中断,调用中断服务函数处理)

相关库函数:

//输入捕获通道初始化函数:
//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;
//TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM5_ICInitStructure.TIM_ICPolarity = //TIM_ICPolarity_Rising;
//TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 
//TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
//TIM5_ICInitStructure.TIM_ICFilter = 0x00;
//TIM_ICInit(TIM5, &TIM5_ICInitStructure);
//通道极性设置独立函数:void TIM_OCxPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
//获取通道捕获值       uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);

输入捕获的一般配置步骤:
① 初始化定时器和通道对应IO的时钟。
② 初始化IO口,模式为输入:GPIO_Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 ”输入“
③初始化定时器ARR,PSC
TIM_TimeBaseInit();
④初始化输入捕获通道
TIM_ICInit();
⑤如果要开启捕获中断,
TIM_ITConfig();
NVIC_Init();
⑥使能定时器:TIM_Cmd();
⑦编写中断服务函数:TIMx_IRQHandler();

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值