96SEO 2026-02-19 20:04 12
STM32F1除了基本定时器TIM6和TIM7#xff0c;其他定时器都具有输入捕获功能

。
输入捕获可以对输入的信号的上升沿#xff0c;下降沿或者双边沿进行捕获#xf…一、输入捕获介绍
在定时器中断实验章节中我们介绍了通用定时器具有多种功能输入捕获就是其中一种。
STM32F1除了基本定时器TIM6和TIM7其他定时器都具有输入捕获功能
。
输入捕获可以对输入的信号的上升沿下降沿或者双边沿进行捕获通常用于测量输入信号的脉宽、测量
ICx信号检测到跳变沿后将使用捕获/比较寄存器(TIMx_CCRx)来锁存计数器的值。
简单的说就是通过检测TIMx_CHx上的边沿信号在边沿信号发生跳变比如上升沿/下降沿的时候将当前定时器的值TIMx_CNT存放到对应的通道的捕获/比较寄存TIMx_CCRx里面完成一次捕获。
同时还可以配置捕获时是否触发中断/DMA
在通用定时器中输入捕获主要用到以上部分STM32的每个通用定时器都有4个输入捕获的通道分别是TIMx_CH1、TIMx_CH2、TIMx_CH3、TIMx_CH4。
我们可以在输入滤波器和边沿检测器中设置我们需要捕获的是上升沿还是下降沿假设我们需要捕获上升沿则当滤波器和边沿检测器捕获到上升沿后CNT计数器中的值会加1同时捕获/比较寄存器中会锁存计数器的值。
。
这个也是在编写程序中必须要了解的。
其实输入捕获和前面定时器中断一样也是通用定时器的一个功能因此还是要用到定时器的相关配置函数具体步骤如下定时器相关库函数在stm32f10x_tim.c和
1使能定时器及端口时钟并设置引脚复用器映射和引脚模式等(以PA0为例)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
其中需要将PA0端口进行复用复用为TIM5的通道1所以我们需要开启复用时钟GPIOA时钟。
voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);
其中TIM_ICInitTypeDef结构体中的成员大致意思为
如果我们需要配置TIM5的通道1为输入捕获功能并且为上升沿捕获。
不分频、直接映射到TI可以如下配置
TIM_ICInitStructure.TIM_ChannelTIM_Channel_1;
TIM_ICInitStructure.TIM_ICFilter0x00;
TIM_ICInitStructure.TIM_ICPolarityTIM_ICPolarity_Rising;//捕获
TIM_ICInitStructure.TIM_ICPrescalerTIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICSelectionTIM_ICSelection_DirectTI;//
TIM_ICInit(TIM5,TIM_ICInitStructure);
TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE)
TIM_ClearITPendingBit(TIM_TypeDef*
GPIO_InitStruct;TIM_TimeBaseInitTypeDef
TIM_TimeBaseInitStruct;TIM_ICInitTypeDef
TIM_ICInitStruct;NVIC_InitTypeDef
NVIC_InitStruct;/*1、打开外设时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,
ENABLE);/*2、配置GPIO*/GPIO_InitStruct.GPIO_Mode
GPIO_Mode_IPD;GPIO_InitStruct.GPIO_Pin
GPIO_InitStruct);/*3、配置定时器*/TIM_TimeBaseInitStruct.TIM_ClockDivision
TIM_CKD_DIV1;TIM_TimeBaseInitStruct.TIM_CounterMode
TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_Period
per;TIM_TimeBaseInitStruct.TIM_Prescaler
TIM_TimeBaseInitStruct);/*4、配置输入捕获*/TIM_ICInitStruct.TIM_Channel
TIM_Channel_1;TIM_ICInitStruct.TIM_ICFilter
0x0;TIM_ICInitStruct.TIM_ICPolarity
TIM_ICPolarity_Rising;TIM_ICInitStruct.TIM_ICPrescaler
TIM_ICPSC_DIV1;TIM_ICInitStruct.TIM_ICSelection
TIM_ICSelection_DirectTI;TIM_ICInit(TIM5,
TIM_ICInitStruct);/*5、配置定时器中断*/TIM_ITConfig(TIM5,
ENABLE);/*6、配置NVIC*/NVIC_InitStruct.NVIC_IRQChannel
TIM5_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd
ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority
1;NVIC_InitStruct.NVIC_IRQChannelSubPriority
1;NVIC_Init(NVIC_InitStruct);/*7、使能定时器*/TIM_Cmd(TIM5,
NEXT_FALLING)//捕获到上升沿{if((input_state
NEXT_RISING;}elseinput_state;}}if(TIM_GetITStatus(TIM5,
NEXT_FALLING)//捕获到下降沿{//获取捕获到的值//改为上升沿捕获input_value
TIM_GetCapture1(TIM5);TIM_OC1PolarityConfig(TIM5,
TIM_ICPolarity_Rising);input_state
NEXT_RISING;}else//捕获到上升沿{//清零input_state和input_value//关闭定时器//清空当前计数值//将下一次捕获改为下降沿捕获//标志下一次捕获下降沿//打开定时器input_state
TIM_ICPolarity_Falling);input_state
ENABLE);}}}TIM_ClearITPendingBit(TIM5,
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback