实现按键按下(低电平)检测到下降沿

按照流程进行编程

步骤1:

初始化函数

包括时基工作参数配置  输入通道配置  更新中断使能   使能捕获、捕获中断及计数器  

HAL_TIM_IC_Init(&ic_handle)    //时基参数配置

HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2)   //输入通道配置

包括ICPolarity    ICSelection   ICPrescaler  ICFilter  四种参数的设置  极性(初始设置检测下降沿还是上升沿)    定时器直接来接到输入捕获通道(映射)   分频  滤波

__HAL_TIM_ENABLE_IT(&ic_handle,TIM_IT_UPDATE);   //更新中断使能
HAL_TIM_IC_Start_IT(&ic_handle,TIM_CHANNEL_2);   /使能捕获 捕获中断 及计数器

步骤2:

msp初始化  包括  定时器时钟 GPIO NVIC

步骤3:

中断服务函数,定时器2中断TIM2_IRQHandler(void)            要包含公共服务函数HAL_TIM_IRQHandler(&ic_handle)

步骤4:

回调函数  HAL_TIM_IC_CaptureCallback (TIM_HandleTypeDef *htim)  回调函数中  写你想要的代码   

#include "ic.h"
#include "stdint.h"
#include "stdio.h"TIM_HandleTypeDef ic_handle={0};void ic_init(uint16_t arr,uint16_t psc)
{TIM_IC_InitTypeDef ic_config ={0};ic_handle.Instance = TIM2;ic_handle.Init.Period = arr;ic_handle.Init.CounterMode =TIM_COUNTERMODE_UP;ic_handle.Init.Prescaler = psc;HAL_TIM_IC_Init(&ic_handle);                       //时基工作参数配置ic_config.ICPolarity = TIM_ICPOLARITY_FALLING;     //选择极性   刚开始捕获的是下降沿 故选择下降沿的模式ic_config.ICSelection = TIM_ICSELECTION_DIRECTTI;  //定时器2被直接连接到相应的输入捕获通道ic_config.ICPrescaler = TIM_ICPSC_DIV1;            //默认不分频ic_config.ICFilter =0;                            //滤不滤波   不滤波设置为0HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2);       //输入通道的配置   捕获的边沿   映射   分频   滤波__HAL_TIM_ENABLE_IT(&ic_handle,TIM_IT_UPDATE);   //更新中断使能   第二个参数为更新中断的模式HAL_TIM_IC_Start_IT(&ic_handle,TIM_CHANNEL_2);  //使能捕获 捕获中断及计数器}void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM2){//①定义初始化结构体GPIO_InitTypeDef gpio_initstruct;//打开时钟__HAL_RCC_GPIOA_CLK_ENABLE();   //打开GPIO的时钟__HAL_RCC_TIM2_CLK_ENABLE();  //打开定时器的时钟//调用GPIO初始化函数gpio_initstruct.Pin = GPIO_PIN_1 ;                         //LED1、LED2对应的引脚gpio_initstruct.Pull = GPIO_PULLUP;                        //上拉   gpio_initstruct.Mode =GPIO_MODE_INPUT;                //推挽复用输出gpio_initstruct.Speed =GPIO_SPEED_FREQ_HIGH;              //高速HAL_GPIO_Init(GPIOA,&gpio_initstruct);HAL_NVIC_SetPriority(TIM2_IRQn, 2,2);           //设置NVICHAL_NVIC_EnableIRQ(TIM2_IRQn);                  //设置NVIC               }
}void TIM2_IRQHandler(void)
{HAL_TIM_IRQHandler(&ic_handle);}
void HAL_TIM_IC_CaptureCallback (TIM_HandleTypeDef *htim)
{printf("捕获到下降沿\r\n");}

主函数:

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "ic.h"int main(void) {HAL_Init();stm32_clock_init(RCC_PLL_MUL9);  // 设置时钟,72MHzled_init();uart1_init(115200);  // 初始化 UARTprintf("hello world!\r\n");  // 通过 UART 输出 "hello world"ic_init(65536-1,72-1);while(1) {led1_on();led2_off();delay_ms(500);led1_toggle();led2_toggle();delay_ms(500);}
}

最终显示结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491198.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件开发中的三层结构

一、三层结构概述 在软件开发中,三层结构(Three - Tier Architecture)是一种常见的软件架构模式。它将软件系统分为三个主要的层次,即表示层(Presentation Layer)、业务逻辑层(Business Logic L…

【MQ】大白话告诉你什么是MQ,没有比这还详细还易懂的文章了吧,以RabbitMQ为例,从小白到大神

目录 分布式系统通信方式 MQ选型与应用场景 应用场景(优势) RabbitMQ工作模型 RabbitMQ简介 RabbitMQ 工作模型(流程)​编辑 Docker安装配置RabbitMQ RabbitMQ管理控制台 RabbitMQ 简单模式构建生产者 RabbitMQ 简单模式…

RTMP推流平台EasyDSS在无人机推流直播安防监控中的创新应用

无人机与低空经济的关系密切,并且正在快速发展。2024年中国低空经济行业市场规模达到5800亿元,其中低空制造产业占整个低空经济产业的88%。预计未来五年复合增速将达到16.03%。 随着科技的飞速发展,公共安防关乎每一个市民的生命财产安全。在…

PCIE概述

PCIE概述 文章目录 PCIE概述前言一、应用场景二、PCIE理论2.1 硬件2.2 拓扑结构:处理器和设备之间的关系2.3 速率2.4 层次接口2.5 四种请求类型2.5.1 bar空间2.5.2 memory2.5.3 IO2.5.4 configuration2.5.5 message 前言 参考链接: pcie总线知识点解析 …

SpringBoot SPI

参考 https://blog.csdn.net/Peelarmy/article/details/106872570 https://javaguide.cn/java/basis/spi.html#%E4%BD%95%E8%B0%93-spi SPI SPI(service provider interface)是JDK提供的服务发现机制。以JDBC为例,JDK提供JDBC接口,在包java.sql.*。MY…

超详细!Jmeter性能测试

前言 性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。 测试流程: 需求分析→环境搭建→测试计划→脚…

快速本地化部署 OnlyOffice服务 ( Linux+Docker)

文章目录 一、OnlyOffice介绍📖二、集成OnlyOffice🧩2.1 环境准备🖥️2.2 搜索镜像2.3 拉取镜像2.4 查看镜像2.5 创建容器2.6 进入容器配置2.7 重启服务2.8 添加字体字号2.9 测试OnlyOffice服务 三、在线预览office文档四、Cpolar内网穿透 一…

加密--03--MD5-- JAVA运用(hutool工具包)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 hutool1.简介2.pom.xml3.Hutool-crypto概述4.MD5 加密 案例11.hutool依赖2.用户表3.加密方法4.业务代码 hutool https://www.hutool.cn/docs/#/ 1.简介 2.pom.xml …

CSS 实现带tooltip的slider

现代 CSS 强大的令人难以置信 这次我们来用 CSS 实现一个全功能的滑动输入器,也就是各大组件库都有的slider,效果如下 还可以改变一下样式,像这样 特别是在拖动时,tooltip还能跟随拖动的方向和速度呈现不同的倾斜角度&#xff0c…

关于SAP Router连接不稳定的改良

这个也是网上看来的,之前在用的时候也在想是不是建立一个长连接,就不至于断线。今天正好看到。 关于SAP Router连接不稳定的改良 我们在使用SAPRouter时经常会碰到断线,其发生原因有很多,如:网络不稳定、操作间隔时间…

docker 搭建自动唤醒UpSnap工具

1、拉取阿里UpSnap镜像 docker pull crpi-k5k93ldwfc7o75ip.cn-hangzhou.personal.cr.aliyuncs.com/upsnap/upsnap:4 2、创建docker-compose.yml文件,进行配置: version: "3" services:upsnap:container_name: upsnapimage: crpi-k5k93ldwf…

Python课设-谁为影狂-豆瓣数据【数据获取与预处理课设】

🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…

STM32 进阶SPI案例1:软件模拟SPI读写FLASH

需求描述 基于寄存器操作&#xff0c;使用软件模拟SPI协议&#xff0c;完成读写FLASH。 硬件电路设计 寄存器代码书写 main.c #include "usart1.h" #include "string.h" #include <stdio.h> #include "m24c02.h" #include "soft_…

Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览

文章目录 一、简介二、下载 QtPdfium三、加载 QtPdfium 动态库四、Demo 使用 关于QT Widget 其它文章请点击这里: QT Widget 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF&#xff08;二&#xff09;使用 QtPdfium库实现…

【SpringCloud】OpenFeign配置时间Decode

文章目录 1.自定义反序列化器2.配置类与自定义 ObjectMapper客户端 需求&#xff1a;OpenFeign配置自定义decode&#xff0c;解析http请求返回的时间字符串 1.自定义反序列化器 Date 自定义反序列化器 import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.j…

java程序设计2(二)

自动装箱和自动拆箱&#xff1a;基本数据类型和包装类型之间可以直接相互转换的包装类通常可以区分有效数据和无效数据&#xff0c;例如&#xff1a;0和nullString类 获取字符串的方式 【企业面试】 String str1 "hello"; 这种获取字符串的方式&#xff0c;在串池…

百度地图JavaScript API核心功能指引

百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口&#xff0c;它能够帮助您在网站中构建功能丰富、交互性强的地图应用&#xff0c;包含了构建地图基本功能的各种接口&#xff0c;提供了诸如本地搜索、路线规划等数据服务。百度地图JavaScript API支持HTTP和HT…

让 Win10 上网本 Debug 模式 QUDPSocket 信号槽 收发不丢包的方法总结

在前两篇文章里&#xff0c;我们探讨了不少UDP丢包的解决方案。经过几年的摸索测试&#xff0c;其实方法非常简单, 无需修改代码。 1. Windows 下设置UDP缓存 这个方法可以一劳永逸解决UDP的收发丢包问题&#xff0c;只要添加注册表项目并重启即可。即使用Qt的信号与槽&#…

【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-Trim

文章目录 【他山之石】Leading-Trim: The Future of Digital Typesetting&#xff1a;数字排版的未来 —— Leading-TrimHow an emerging CSS standard can fix old problems and raise the bar for web apps1. The problem with text boxes today2. How we got here: a histor…

MySQL基础大全(看这一篇足够!!!)

文章目录 前言一、初识MySQL1.1 数据库基础1.2 数据库技术构成1.2.1 数据库系统1.2.2 SQL语言1.2.3 数据库访问接口 1.3 什么是MySQL 二、数据库的基本操作2.1 数据库创建和删除2.2 数据库存储引擎2.2.1 MySQL存储引擎简介2.2.2 InnoDB存储引擎2.2.3 MyISAM存储引擎2.2.4 存储引…