96SEO 2026-02-19 22:47 31
学习是永无止境的就算之前学过的东西再次学习一遍也能狗学习到很多东西输入捕获很早之前就用过了但是仅仅是照搬例程没有去进行理解。

温故而知新
基本定时器针对不同情况可以选择自己所需要的定时器以下是这几种定时器的主要功能。
计数器单元输入捕获重复计数器PWM模式互补输出和死区插入支持针对定位的增量(正交)编码器和霍尔传感器电路刹车功能DMA功能
计数器单元输入捕获PWM模式支持针对定位的增量(正交)编码器和霍尔传感器电路DMA功能
我们使用定时器很多时候使用都是用做于计数作用同样也可以作为PWM输出输入捕获脉宽测量频率检测等等有的时候我们还会使用DMAPWM输出这样的功能总之定时器对于我们进行产品开发是必不可少的。
这里我使用的是航芯ACM32FP0X系列的单片机不过其他单片机用法也是一样的。
这里我们主要关注以上六个寄存器中断使能寄存器、状态寄存器、事件产生寄存器、预分频寄存器、自动加载寄存器、捕获/比较寄存器。
其他的寄存器不是说不重要只是在本次实验中主要理解这几个寄存器就好。
因为本次实验没有使用外置的脉冲发生器所以使用单片机上另一个通用定时器来配置PWM然后使用高级定时器去进行输入捕获。
TIM15;TIM_Handler_PWM.Init.ARRPreLoadEn
TIM_Handler_PWM.Init.ClockDivision
TIM_Handler_PWM.Init.CounterMode
TIM_Handler_PWM.Init.RepetitionCounter
{TIM_Handler_PWM.Init.Prescaler
首先是常规的配置这里我选择的是定时器15作为PWM口进行输出然后不分频所以APB的时钟就是定时器的时钟。
然后就是自动重装载值ARR和预分配系数Prescaler的配置这两个参数共同决定了配置的PWM输出极限频率是多少。
代表的是定时器经过分频之后能够达到的极限频率我们可以来推导一下timer_clock也就是主时钟APBCLK分频之后
简单约去公约数得到的就是TIM_CLOCK_FREQ所以当重装载值为1的时候TIM_CLOCK_FREQ就是最高频率。
再来解释一下周期是怎么得出的由于1s之内计数器计数了TIM_CLOCK_FREQ次所以一次需要的时间是1/TIM_CLOCK_FREQ所以周期和重装载值之间的关系就是T
这里除以1000的原因是将秒的单位换算成毫秒。
OK也不知道讲清楚了没有之前也搞不懂这个关系式后来推导出来的时候还感觉蛮巧妙的。
TIM1;TIM_Handler.Init.ARRPreLoadEn
TIM_Handler.Init.RepetitionCounter
TIM1_MSP_Pre_Init(TIM_Handler);
HAL_TIMER_Base_Init(TIM_Handler);
TIM_SLAVE_CAPTURE_ACTIVE_RISING_FALLING;
HAL_TIMER_Capture_Config(TIM_Handler.Instance,
上面也是一些很常规的配置配置了分频系数为1意味着定时器的频率和APB时钟一致重装载值为0xFFFF这些数据传达了一个怎样的信息呢说明了使用输入捕获的频率可高达64MHzAPB时钟为64MHz说明捕获精度可以达到1/64000000
0xFFFF。
然后下一个就是设置捕获触发模式可能不同的单片机的库设置起来会有细微差别但是大致意思是相同的。
由于我们需要收集这些鞋数据然后在串口上打印出来所以我这里使用了中断触发在中断里面收集数据。
HAL_TIMER_Clear_Capture_Flag(TIM_Handler,
TIM_CHANNEL_1);NVIC_ClearPendingIRQ(TIM1_CC_IRQn);
NVIC_ClearPendingIRQ(TIM1_BRK_UP_TRG_COM_IRQn);NVIC_EnableIRQ(TIM1_CC_IRQn);
NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);
HAL_TIMER_Base_Init(TIM_Handler);
TIM_IT_CC1);HAL_TIM_ENABLE_IT(TIM_Handler,
用于记录更新次数HAL_TIM_Capture_Start(TIM_Handler.Instance,
当然这里还加了个溢出中断用于辅助捕获计算超出最大捕获长度的电平时间具体思路就是当计数器溢出的时候在事件更新中断里面设置一个变量进行加加。
可以大致看一下捕获中断里面的函数主要是获取触发了捕获中断之后将数据写入事先定义好的数组然后在定义一个变量进行计数。
1;Capture_data[0][capture_times]
{Capture_data[1][capture_times]
NVIC_ClearPendingIRQ(TIM1_CC_IRQn);
这样在主函数当中我们就可以是去使用到这些数据然后打印到串口。
这里要注意一点我使用的是双边沿触发所以打印出来的不是一个周期而是两段占空比的数值。
当然这里我还使用了DMAPWM进行PWM输出如果再讲下去就有点多了这部分内容网上也有很多。
输入捕获是高级定时器和通用定时器才有的功能主要通过设置触发边沿和设置捕获频率来对脉宽进行一个测量得出脉宽之后我们就可以很容易地计算出频率和周期。
作为专业的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