STM32学习--5-1 对射式红外传感器计次

接线图

原理图:

CountSensor.c

#include "stm32f10x.h"                  // Device headeruint16_t CountSensor_Count;void CountSensor_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 开启APB2Periph外设GPIOB时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  // 开启APB2Periph外设AFIO时钟// 配置GPIOGPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  // 中断输入设置为上拉输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);// 配置EXTIGPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14); // 配置中断GPIOB、pin14EXTI_InitTypeDef EXTI_InitStructure;  // 配置EXTI_InitStructure参数EXTI_InitStructure.EXTI_Line = EXTI_Line14;  // 线14EXTI_InitStructure.EXTI_LineCmd = ENABLE;  // 开启EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // 中断模式EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // 下降沿触发EXTI_Init(&EXTI_InitStructure);// 配置NVICNVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置2位响应优先级2位抢占NVIC_InitTypeDef NVIC_InitStruct;NVIC_InitStruct.NVIC_IRQChannel= EXTI15_10_IRQn; // 设置15-10NVIC_InitStruct.NVIC_IRQChannelCmd= ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority= 1; //设置抢占Preemption和响应优先级为1NVIC_InitStruct.NVIC_IRQChannelSubPriority= 1;NVIC_Init(&NVIC_InitStruct);
}uint16_t CountSensor_Get(void)
{return CountSensor_Count;
}void EXTI15_10_IRQHandler(void)
{if (EXTI_GetITStatus(EXTI_Line14) == SET)// 10-15都能进来,判断是否是14进入,取值SET、RESET{CountSensor_Count ++; // 每执行一次中断计数加一EXTI_ClearITPendingBit(EXTI_Line14); // 每次中断结束后,清除标志位,要不会卡死}
}

CountSensor.h

#ifndef __COUNTSENSOR_H
#define __COUNTSENSOR_Hvoid CountSensor_Init(void);
// 中断函数不需要导入,会自动执行
uint16_t CountSensor_Get(void);#endif

 main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "CountSensor.h"int main(void)
{	OLED_Init();CountSensor_Init();OLED_ShowString(1,1,"Count:");  // 字符串用双引号括起来//OLED_ShowString(1,3,"    "); //清除某一部分while(1){OLED_ShowNum(1,7,CountSensor_Get(),3);}
}

效果图

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

生产报工信息化全流程大讲解

在企业的生产管理中,生产报工是一个关键环节,但传统的生产报工方式存在诸多痛点,制约了企业的发展。随着数字化技术的发展,多个平台为企业提供了有效的解决方案。基于生产报工信息化方案报告》白皮书,本文深入探讨生产…

复位电路的亚稳态

复位导致亚稳态的概念: 同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输(数据在这个时间段内必须保持不变:1不能变为0,0也不能变为1),防止亚稳态; …

ZStack ZROP首个商用版本发布,打造云的可持续发展框架

经过长时间的研发和测试,ZStack ZROP IT服务中台V4.2.0版本正式发布。ZROP 是针对ZStack全系列产品运营、运维、一体化的自研平台。作为第一个商用版本,ZROP V4.2.0支持包含ZStack Cloud、ZStack Cube、ZStack ZStone、ZStack Zaku、ZStack Edge、ZStack…

【隐私计算篇】使用GPU加速计算联邦学习XGBOOST算法以及对NVIDIA FLARE(NVIDIA 联邦学习应用运行环境)的介绍

1. 背景介绍 借着最近在搞GPU相关的项目契机,来介绍一下英伟达Nvidia FLARE项目【1】,并且利用GPU硬件来加速联邦学习XGBOOST算法。感觉开源的机器学习、深度学习已经开始出现拥抱隐私计算的趋势,比如近期我正在关注Andrew Ng的联邦学习用…

C语言 | 第十六章 | 共用体 家庭收支软件-1

P 151 结构体定义三种形式 2023/3/15 一、创建结构体和结构体变量 方式1-先定义结构体,然后再创建结构体变量。 struct Stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 }; struct Stu stu1, stu2; //…

STM32学习--5-2 旋转编码器计次

接线图 按键按下,旋转编码器输出低电平 Encoder.c #include "stm32f10x.h" // Device headerint16_t Encoder_Count; void Encoder_init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // 开启APB2Periph外设GPIOB时钟…

【寻找one piece的算法之路】前缀和(一)

💐个人主页:初晴~ 📚相关专栏:寻找one piece的刷题之路 什么是前缀和? 主要是通过预先计算数组或矩阵的前缀和,来快速查询子数组或子矩阵的和。这种算法可以用空间换时间,提高查询效率。 概念…

leetcode 3217 从链表中移除在数组中的结点

1.题目要求: 给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。 示例 1: 输入: nums [1,2,3], head [1,2,3,4,5] 输出: [4,5] 解释: 移除数值…

PCL点云处理之求法向量

求法向量干什么?将点渲染成面 1、一个点垂直于一个曲线的切线叫法线 2、在点云中取一块区域,用最小二乘将区域中的点云拟合成一个面(贴合在曲面上的一个切面)在相近的区域计算出n个这样的面,用这个面求出法向量&#…

最新开源:智源BGE登顶Hugging Face月度榜!北大快手开源Pyramid Flow!Rhymes AI发布首款开源多模态AI模型Aria!

文章目录 1. 国产AI模型登顶全球TOP 1!智源BGE下载破亿成Hugging Face月榜冠军2. 北大&快手开源视频生成模型Pyramid Flow,1分钟生成5秒视频3. Rhymes AI发布首款开源多模态AI模型Aria,性能超越GPT-4o mini4. Mistral AI发布 Pixtral-12B…

华为 静态路由和bfd 侦测的实验

实验要求 sw1 上业务地址192.168.1.1/24 SW3 业务地址192.168.2.1/24 正常情况下走主链路,不正常的情况下走备份链路 2 配置 这是基本地址配置 开启了bfd 本端地址为 10.1.1.1 对端地址是10.1.1.2 关键是discrimination 分辨参数 …

【JavaScript】LeetCode:61-65

文章目录 61 课程表62 实现Trie(前缀树)63 全排列64 子集65 电话号码的字母组合 61 课程表 Map BFS拓扑排序:将有向无环图转为线性顺序。遍历prerequisites:1. 数组记录每个节点的入度,2. 哈希表记录依赖关系。n 6&a…

基于深度学习的细粒度图像分析综述【翻译】

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 基础信息0 摘要1 INTRODUCTION2 识别与检索 RECOGNITION VS. RETRIEVAL3 问题和…

牛客SQL练习详解 06:综合练习

牛客SQL练习详解 06:综合练习 SQL34 统计复旦用户8月练题情况SQL35 浙大不同难度题目的正确率SQL39 21年8月份练题总数 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! SQL34 统…

Python100道新手练习题(附答案)

基础语法 1.打印 “Hello, World!” print("Hello, World!")2.定义一个变量并打印其值 message "Hello, Python!" print(message)3.定义两个整数变量并计算它们的和 a 5 b 3 sum a b print(sum)4.使用条件语句判断一个数是否为正数 num 10 if n…

初知C++:AVL树

文章目录 初知C:AVL树1.AVL树的概念2.AVL树的是实现2.1.AVL树的结构2.2.AVL树的插入2.3.旋转2.4.AVL树的查找2.5.AVL树平衡检测 初知C:AVL树 1.AVL树的概念 • AVL树是最先发明的自平衡⼆叉查找树,AVL是⼀颗空树,或者具备下列性…

node.js服务器基础

node.js的事件循环 node.js是基于事件驱动的,通常在代码中注册想要等待的事件,设定好回调函数,当事件触发的时候就会调用回调函数。如果node.js没有要处理的事件了,那整个就结束了;事件里面可以继续插入事件,如果有事…

低代码开发技术:驱动MES系统创新与制造业数字化转型的融合之路

低代码开发与生产管理MES系统的融合,是当今制造业数字化转型的一个重要趋势。以下是对这一融合现象的详细分析: 一、低代码开发的概念与特点 低代码开发是一种通过图形化界面和预构建模块来简化应用程序开发过程的方法。它允许开发人员使用拖放组件和最…

接口多继承与子类继承多接口时的冲突问题,方法冲突与变量冲突.....

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

JavaScript 第7章:字符串处理

第7章:字符串处理 在 JavaScript 中,字符串是一个非常常用的数据类型,用于表示文本信息。JavaScript 提供了许多内置的方法来处理字符串,包括操作、搜索、替换和格式化等。 一、字符串操作方法 1. charAt charAt(index) 方法返…