输入捕获原理及配置

在这里插入图片描述在这里插入图片描述
第一步就是滤波在这里插入图片描述在这里插入图片描述在这里插入图片描述1分频,就是每个上升沿(假如是上升沿触发)触发一次捕获,2分频就是每两个事件触发一次捕获,就是每检测到两个上升沿才去捕获一下,触发捕获的概念就是把计数器的值装载到捕获寄存器中。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
准备参与电赛了,前段花了一段时间学习了瑞萨单片机,听说,想得特等奖的四轴队伍必须用瑞萨单片机?要不然也可以考虑其他型号的,比如STM32和K60这些常用的芯片。在参赛之前做过STM32相关的四轴。下面免费分享STM32和K60相关资料。 STM32电赛资料 ASCII字符表 AT24C02 Explorer STM32F4_V1.5_SCH GPIO的配置种类 PWM模式体会 STM32F4xx_Clock_Configuration_V1.0.1 STM32F4xx中文参考手册 STM32F4开发指南-库函数版本_V1.0 STM32F10x常见应用解析 STM32中断优先级 STM32中断优先级与相关使用概念 STM32中使用GPIO的总结(超强) STM32中文参考手册_V10 USART串口配置方法 K60电赛资料 [LPLD_Kinetis底层库V2]函数手册 [跟我学OSKinetis]第5课-精度时间我做主!ADC! _ 拉普兰德电子技术 [跟我学OSKinetis]第7课-PIT定时器!So easy! _ 拉普兰德电子技术 [跟我学OSKinetis]第8课-FTM的PWM、输入捕获、正交解码 _ 拉普兰德电子技术 [跟我学OSKinetis]第10课-FlexBus之SRAM、LCD的应用 _ 拉普兰德电子技术 《飞思卡尔MCU应用开发》全攻略 ARM CORTEX -M4自学笔记:基于K60 I2C学习心得 K60时钟模式 K60中文资料整合版 LQ-K60P144-SYSVB核心板原理图 串口通信:UART、SPI、I2C区别 从零入手Kinetis系统开发(1-11) 关于IAR软件的Go_to_Definition_of功能问题的解决方法 三天入门 Cortex-M4 ----Kinetis(正式版) 由入门到精通吃透PID _LQ_LPTMR_脉冲计数通过 _LQ_LPTMR_延时 00_LED验证超频 00_LQ_test_pll_LED 00_LQ_uart_int_test_pll180 00_串口验证超频 01_GPIO及LED测试 02_串口循环收发 03_串口中断收发 04_GPIO按键演示 05_PIT定时中断 06_十二位和十六位ADC串口输出 07_PWM输出FTM1 08_PWM电机控制FTM1_1通道-PWM公式更正 08_PWM舵机控制FTM0_2通道-PWM公式更正 08_PWM舵机控制FTM1_2通道-PWM公式更正 10_超频LED指示 11_LQ_IIC_8451_UART 11_LQ_moniIIC_8451_UART_g输出14位加速度值 11_LQ_moniIIC_8451_UART输出14位加速度原始值 12_GPIO中断 13_LQ_OLED演示 14_LQ_OLED显示并口数据 15_并行口演示 16_LQ_SPI0通信待验证 16_SPI_CW10
输入捕获是一种测量外部信号频率的常用方法。其原理是通过捕获外部信号的边沿(上升沿或下降沿)来计算信号的周期,从而得到频率。 以下是一个示例,演示如何使用输入捕获功能来测量信号的频率: 1. 配置定时器和输入捕获引脚: - 配置一个定时器来作为计数器,并设置其时钟源和工作模式。 - 选择一个GPIO引脚,并将其配置为输入模式,连接到外部信号源。 2. 配置输入捕获功能: - 设置输入捕获模式为边沿捕获,选择上升沿或下降沿。 - 配置触发条件,例如设置捕获事件在每个边沿发生时都触发。 3. 中断处理程序: - 在捕获事件发生时,中断处理程序会被触发。 - 在中断处理程序中,读取定时器的计数器值,并计算两个连续捕获事件之间的时间差。 - 根据时间差计算频率,例如通过计算周期的倒数得到频率。 示例伪代码如下: ```c // 配置定时器和输入捕获引脚 configure_timer(); configure_input_capture_pin(); // 配置输入捕获功能 configure_input_capture(); // 定义中断处理程序 void input_capture_interrupt_handler() { // 读取定时器计数器值 uint32_t capture_value = read_timer_capture_value(); // 计算时间差 uint32_t time_difference = calculate_time_difference(capture_value); // 计算频率 float frequency = calculate_frequency(time_difference); // 打印频率值或进行其他处理 print_frequency(frequency); } // 主程序 int main() { // 启用中断 enable_interrupts(); while (1) { // 等待中断发生 } } ``` 需要根据具体的微控制器和编程环境进行相应的配置和函数调用。请参考相关的技术手册和编程指南以获取更详细的信息和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值