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

按照流程进行编程

步骤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.mzph.cn/pingmian/63940.shtml

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

相关文章

汽车车牌标记支持YOLO,COCO,VOC三种格式标记,4000张图片的数据集

本数据集支持YOLO,COCO,VOC三种格式标记汽车车牌,无论是新能源汽车还是油车都能识别标记,该数据集一共包含4000张图片 数据集分割 4000总图像数 训练组 70% 2800图片 有效集 20% 800图片 测…

游秦岭山感

巍乎高哉! 悠悠大秦岭 佑吾华夏之根脉 八水润之 泽万物而赋予生机 于万山之山中 享自然之美于万物 西有昆仑祖龙脉 东有秦岭护关中 绿水青山国之本 万山长青谋发展 旭日东升耀中华 固我山河永泰安 你我同行共保护 关中龙脉更兴旺

阿里云-通义灵码:测试与实例展示

目录 一.引子 二.例子 三.优点 四.其他优点 五.总结 一.引子 在软件开发的广袤天地中,阿里云通义灵码宛如一座蕴藏无尽智慧的宝库,等待着开发者们去深入挖掘和探索。当我们跨越了入门的门槛,真正开始使用通义灵码进行代码生成和开发工作…

微信小程序中使用miniprogram-sm-crypto实现SM4加密攻略

在微信小程序开发过程中,数据安全至关重要。本文将为大家介绍如何在微信小程序中使用miniprogram-sm-crypto插件进行SM4加密,确保数据传输的安全性。 一、SM4加密简介 SM4是一种对称加密算法,由国家密码管理局发布,适用于商密领…

使用 Ansys Fluent 对气体泄漏检测进行建模

了解使用 Ansys Fluent 仿真气体泄漏和确保安全的前沿技术。 挑战 气体泄漏对人类安全和环境构成重大风险。及早检测气体泄漏可以防止潜在的灾难,包括爆炸、火灾和有毒物质暴露。有效的气体泄漏检测系统对于石油和天然气、化学加工和住宅基础设施等行业至关重要。…

QT图形/视图架构详解(一)

场景、视图与图形项 图形/视图架构主要由 3 个部分组成,即场景、视图和图形项,三者的关系如图所示: 场景、视图和图形项的关系 场景(QGraphicsScene 类) 场景不是界面组件,它是不可见的。场景是一个抽象的…

LLM之RAG实战(五十)| FastAPI:构建基于LLM的WEB接口界面

FastAPI是WEB UI接口,随着LLM的蓬勃发展,FastAPI的生态也迎来了新的机遇。本文将围绕FastAPI、OpenAI的API以及FastCRUD,来创建一个个性化的电子邮件写作助手,以展示如何结合这些技术来构建强大的应用程序。 下面我们开始分步骤操…

Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

目录 一、Maven项目模块化? (1)基本介绍。 (2)汽车模块化生产再聚合组装。 (3)Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…

CNAS软件实验室认可费用清单,如何规划预算方案?

CNAS软件实验室在申请认可前,需要按照CNAS相关认可文件的要求,建立完善的CNAS软件实验室质量管理体系,试运行六个月,且覆盖全部质量要素后,向CNAS认可委提交申请,等待专家的审查。在前期的筹备工作中&#…

【2024 Dec 超实时】编辑安装llama.cpp并运行llama

首先讲一下环境 这是2024 年12月,llama.cpp 的编译需要cmake 呜呜呜 网上教程都是make 跑的。反正我现在装的时候make已经不再适用了,因为工具的版本,捣鼓了很久。 ubuntu 18 conda env内置安装。 以下是可以完美编译llama.cpp的测试工具版…

优化移动端H5:常见问题与解决方案

移动端H5开发中的“坑”与解决方案 本文介绍了开发中遇到的几个关于移动端H5开发中的小问题,以及解决的方法。 一、iOS滑动不流畅问题 在iOS设备上,H5页面的滑动效果有时会出现不流畅的情况,特别是在页面高度超过一屏时。这通常是由于iOS的…

Visual Studio 2022+CMake配置PCL1.14.1

前言 本教程只是提供高效的PCL配置流程,不提供Qt环境配置,如果需要GUI界面,则需要自寻查找Cmake配置QT的教程。请相信,在CMake之下没有任何事是困难的,最困难的工作已经由前辈们完成。因此,对于C用户来说学…

C++多线程实战:掌握图像处理高级技巧

文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 导读 在当今的计算世界中,…

C++在关键嵌入式软件领域逐步取代 Ada 的演进历程

第一章:引言 1.1 Ada 与 C在嵌入式系统中的角色 在嵌入式系统开发领域的漫长演进历程中,Ada 与 C宛如两颗璀璨而又各具特色的星辰,交替影响着该领域的发展轨迹。它们不仅代表了两种不同的编程哲学,也反映了不同时期对软件可靠性…

高项 - 法律法规与标准规范

个人总结,仅供参考,欢迎加好友一起讨论 博文更新参考时间点:2024-12 高项 - 章节与知识点汇总:点击跳转 文章目录 高项 - 法律法规与标准规范法律法规民法典(合同编)招标投标法政府采购法专利法著作权法商…

EXCEL数据清洗的几个功能总结备忘

目录 0 参考教材 1 用EXCEL进行数据清洗的几个功能 2 删除重复值: 3 找到缺失值等 4 大小写转换 5 类型转化 6 识别空格 0 参考教材 精通EXCEL数据统计与分析,中国,李宗璋用EXCEL学统计学,日EXCEL统计分析与决策&#x…

基于小程序实现地图定位、轨迹绘制、地图标点、快捷导航、唤醒导航APP、开箱即用

目录 前言研究背景与意义研究目标与内容研究方法与技术路线小程序地图组件介绍定位技术与原理轨迹绘制技术地图标注与标记功能地图定位与轨迹绘制功能实现定位功能设计与实现获取用户当前位置总结说明代码块前言 研究背景与意义 地图定位和轨迹追踪作为智能手机中常见的功能之…

计算机网络之网络层超详细讲解

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 …

【数字花园】数字花园(个人网站、博客)搭建经历汇总教程

目录 写在最最前面第一章:netlify免费搭建数字花园相关教程使用的平台步骤信息管理 第二章:本地部署数字花园数字花园网站本地手动部署方案1. 获取网站源码2.2 安装 Node.js 3. 项目部署3.1 安装项目依赖3.2 构建项目3.3 启动http服务器 4. 本地预览5. 在…

计算机毕业设计Python+Vue.js游戏推荐系统 Steam游戏推荐系统 Django Flask 游 戏可视化 游戏数据分析 游戏大数据 爬虫 机

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…