当前位置: 首页 > news >正文

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

按照流程进行编程

步骤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);}
}

最终显示结果

相关文章:

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

按照流程进行编程 步骤1: 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…...

解析 SSM 垃圾分类系统,助力生态平衡

前 言 垃圾分类系统,传统的垃圾分类系统模式还处于线下管理阶段,管理效率极低。随着垃圾分类系统信息的不断增多,传统基于线下管理模式已经无法满足当前用户需求,随着信息化时代的到来。通过该系统的设计,管理员可以管…...

软件工程 设计的复杂性

复杂性代表事件或事物的状态,它们具有多个相互关联的链接和高度复杂的结构。在软件编程中,随着软件设计的实现,元素的数量以及它们之间的相互联系逐渐变得庞大,一下子变得难以理解。 如果不使用复杂性指标和度量,软件…...

Nginx 限制只能白名单 uri 请求的配置

实际生产项目中,大多数时候我们会将后端的 http 接口通过前置 nginx 进行反向代理,对互联网用户提供服务。往往我们后端服务所能提供的接口服务是大于互联网用户侧的实际请求的接口地址数量的(例如后端服务一共有100个api接口,经过…...

QT c++ 同时使用sqlite 和mysql数据库的问题

在项目开发中,同时使用了sqlite 和mysql数据库,分开这两部分运行功能都正常,但是一起运行,就异常,sqlite部分不能使用。 现象:出现如下提示 QSqlDatabasePrivate::addDatabase: duplicate connection nam…...

redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip

redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip 1、安装redis三主三从集群2、正常状态的redis集群3、更改redis集群服务器的ip 重启服务器 集群会down4、更改redis集群服务器的ip 重启服务器 集群down的原因5、更改redis集群服务器的ip后&#xf…...

【C++习题】19.数组中第K个大的元素

题目&#xff1a;数组中第K个大的元素 链接&#x1f517;&#xff1a;数组中第K个大的元素 题目&#xff1a; 代码&#xff1a; class Solution { public:int findKthLargest(vector<int>& nums, int k) {// 将数组中的元素先放入优先级队列中priority_queue<i…...

JIS-CTF: VulnUpload靶场渗透

JIS-CTF: VulnUpload来自 <https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/> 1,将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 靶机IP地址192.168.23.162&#xff0c;攻击机IP地址192.168.23.140…...

BGP-面试

简单介绍一下BGP BGP&#xff0c;边界网关协议&#xff0c;属于路径矢量路由协议。属于触发式更新或者增量更新。具有丰富的路由策略&#xff0c;能够灵活的进行路由选择。重心不是在路由学习&#xff0c;而是路由优选、更高效的传递路由和维护大量的路由信息。基于TCP&#xf…...

Git-安装与常用命令

目录 1.Git环境配置 1.1下载 1.2配置 1.2.1基本配置 1.2.2常用指令配置别名 1.2.3获取本地仓库 git命令在git bash中演示&#xff0c;会用到一些Linux命令。 1.Git环境配置 1.1下载 Git下载地址&#xff1a;https://git-scm.com/download 傻瓜式安装就可以了。 安装…...

回归预测 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习回归预测

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 回归预测 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习回归预测 模型设计 基于BiLSTM-Adaboost的回归预测模型结合了双向长短期记忆神经网络(BiLSTM)和Adaboost集成学习的…...

微信小程序跳转其他小程序以及跳转网站

一、跳转其他小程序 1.1 知道appid和页面路径 wx.navigateToMiniProgram({appId: appid, // 替换为目标小程序 AppIDpath: pathWithParams, // 小程序路径envVersion: release, // 开发版、体验版或正式版success(res) {console.log("跳转到其他小程序成功&#xff01;&q…...

Not using native diff for overlay2, this may cause degraded performance……

问题现象 案例&#xff1a;Anolis 8.9&#xff08;4.19.91-26.an8.x86_64&#xff09; Overlay2存储驱动程序&#xff09; 当我们安装好Docker之后&#xff0c;通过systemctl status docker -l 会发现有一个告警信息&#xff1a;levelwarning msg"Not using native dif…...

【自用】管材流转项目 数据库恢复之 PIPE 表 二维码相关 各个表恢复 SQL

总览 1.后端前端和数据库 PIPE 页面的关系 2.后端批量生成二维码 jpg 图片 3.为了保证 PIPE 正常使用的调整 4.TRANSFORM&#xff08;流转表&#xff09; 一、后端前端和数据库 PIPE 页面的关系 1.前端 关于PIPE页面&#xff0c;首先&#xff0c;在前端&#xff0c;我们已经…...

【渗透测试】信息收集二

其他信息收集 在渗透测试中&#xff0c;历史漏洞信息收集是一项重要的工作&#xff0c;以下是相关介绍&#xff1a; 历史漏洞信息收集的重要性 提高效率&#xff1a;通过收集目标系统或应用程序的历史漏洞信息&#xff0c;可以快速定位可能存在的安全问题&#xff0c;避免重复…...

测试工程师八股文04|计算机网络 和 其他

一、计算机网络 1、http和https的区别 HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议&#xff0c;建立在TCP/IP协议栈之上&#xff0c;用于客户端&#xff08;如浏览器&#xff09;和服务器之间的通信。 ①http和https的主要区别在于安全性。http是一种明…...

定时/延时任务-Kafka时间轮源码分析

文章目录 1. 概要2. TimingWheel2.1 核心参数2.2 添加任务2.3 推进时间 3. TimerTaskList3.1 添加节点3.2 删除节点3.3 刷新链表3.4 队列相关 4. 时间轮链表节点-TimerTaskEntry5. TimerTask6. Timer 和 SystemTimer - 设计降级逻辑7. 上层调用8. 小结 1. 概要 时间轮的文章&a…...

如何用状态图进行设计05

到目前为止&#xff0c;我们已经讨论了状态图的原理。这些原理对状态图和扩展状态图都适用。第二章后面的部分主要讲述了扩展状态图的扩展功能。我们将围绕这些增强的功能&#xff0c;使你对BetterState Pro的设计能力有很好的了解。 关于这些内容和其他有关扩展状态图特性的完…...

【计算机视觉】边缘检测

图像的边缘简单来说就是图像中灰度不连续的地方。 1.图像梯度 图像梯度是指图像像素灰度值在某个方向上的变化&#xff1b;图像梯度是图像的一阶导数&#xff0c;实际计算时可以使用差分来近似。 1.1 什么是图像梯度&#xff1f; 图像梯度是一种数学工具&#xff0c;用于描…...

林曦词典|无聊

“林曦词典”是在水墨画家林曦的课堂与访谈里&#xff0c;频频邂逅的话语&#xff0c;总能生发出无尽的思考。那些悠然轻快的、微妙纷繁的&#xff0c;亦或耳熟能详的词&#xff0c;经由林曦老师的独到解析&#xff0c;意蕴无穷&#xff0c;让人受益。于是&#xff0c;我们将诸…...

multiagent-particle-envs与PettingZoo对比:迁移指南与最佳实践

multiagent-particle-envs与PettingZoo对比&#xff1a;迁移指南与最佳实践 【免费下载链接】multiagent-particle-envs Code for a multi-agent particle environment used in the paper "Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments"…...

零基础入门机器人抓取控制:借助快马平台轻松运行第一个OpenClaw Onboard程序

零基础入门机器人抓取控制&#xff1a;借助快马平台轻松运行第一个OpenClaw Onboard程序 作为一个机器人编程的新手&#xff0c;最近我对OpenClaw Onboard框架产生了浓厚的兴趣。这个框架专门用于控制机器人夹爪&#xff0c;但刚开始接触时&#xff0c;我发现它的学习曲线有点…...

seo关键字价格便宜的方法有哪些

价格便宜的方法有哪些 在当今市场竞争激烈的环境中&#xff0c;降低成本成为企业提升竞争力的关键之一。价格便宜的方法有哪些呢&#xff1f;本文将从问题分析、原因说明、解决方法、注意事项和实用建议五个方面来详细探讨这一话题。 问题分析 我们需要明确什么是“价格便宜…...

UE6.5调试性能对比实测:Clang 19 vs MSVC 17.12 vs GCC 14.2(C++27特性支持度+调试信息完整性双维度TOP1)

第一章&#xff1a;UE6.5 C27 调试能力演进与基准定位Unreal Engine 6.5 首次原生支持 C27 标准子集&#xff0c;并深度整合了 Clang 18 的调试元数据增强特性&#xff0c;显著提升了符号解析精度与运行时诊断能力。相比 UE5.4 中基于 DWARF-5 的有限 C20 支持&#xff0c;UE6.…...

Zabbix监控Docker化部署避坑指南:从镜像版本选择到安全加固的完整配置

Zabbix监控Docker化部署避坑指南&#xff1a;从镜像版本选择到安全加固的完整配置 在容器化技术席卷运维领域的今天&#xff0c;将Zabbix监控系统部署在Docker环境中已成为主流选择。但看似简单的docker-compose up -d背后&#xff0c;隐藏着无数可能让运维工程师深夜加班的&qu…...

5个实战技巧深度掌握KeymouseGo跨平台自动化工具

5个实战技巧深度掌握KeymouseGo跨平台自动化工具 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 在现代工作流程中&#xf…...

Java 21虚拟线程实战:从基础创建到高并发场景调优

1. Java 21虚拟线程入门&#xff1a;从零开始掌握轻量级并发 第一次听说Java 21的虚拟线程时&#xff0c;我正被一个高并发服务的性能问题折磨得焦头烂额。当时我们的支付网关在促销期间每秒要处理上万笔交易&#xff0c;传统的线程池模型让服务器资源捉襟见肘。直到尝试了虚拟…...

Keychron机械键盘选购指南:红轴双模如何提升程序员生产力

1. 为什么程序员需要一把Keychron红轴双模键盘 作为一个每天要和键盘亲密接触8小时以上的程序员&#xff0c;我深刻体会到一把好键盘对工作效率的影响。之前用过青轴、茶轴、黑轴等各种机械键盘&#xff0c;直到遇到Keychron的红轴双模版本&#xff0c;才真正找到了"本命键…...

OpenClaw+千问3.5-9B本地部署指南:5分钟完成AI助手搭建

OpenClaw千问3.5-9B本地部署指南&#xff1a;5分钟完成AI助手搭建 1. 为什么选择OpenClaw千问3.5-9B组合 去年冬天&#xff0c;当我第一次尝试用Python脚本批量处理公司周报时&#xff0c;就意识到单纯的脚本自动化存在明显瓶颈——它无法应对非结构化任务。直到发现OpenClaw…...

猫抓:重新定义网页资源提取的开源方案

猫抓&#xff1a;重新定义网页资源提取的开源方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容爆炸的时代&#xff0c;我们每天浏览的…...