STM32自学☞对射式红外传感器计数

9a821e331f22455bab0a88d2bdf650c3.jpg

infrared_count.c文件

/*

编写步骤

一、初始化函数

1.开启GPIO、AFIO时钟

(NVIC和EXIT不需要开启,因为EXIT时钟一直处于开启状态,而NVIC是内核里的外设和CPU处在一起且RCC管理的是内核外的外设,综上所述,所以不用开启)

2.配置GPIO

3.配置AFIO

4.配置EXTI

5.配置NVIC

二、中断函数

三、返回计数次数函数

*/

#include "stm32f10x.h"

#include "stm32f10x_exti.h"

#include "infrared_count.h"

uint16_t NumberCount;//统计中断触发的次数

/*初始化函数*/

void Infrared_count_Init(void)

{

 //开始GPIOB、AFIO时钟

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);    

 //GPIO初始化配置

 GPIO_InitTypeDef GPIO_InitStruct; //定义结构体

 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_14; //设置引脚为GPIOB_14

 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU; //设置GPIO模式为上拉输入

 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; //设置速度位50MHz

 GPIO_Init(GPIOB,&GPIO_InitStruct);      

 //配置AFIO的数据选择器,选择中断引脚为GPIOB_14

 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);

 //配置EXIT

 EXTI_InitTypeDef EXTI_InitStruct; //定义结构体

 EXTI_InitStruct.EXTI_Line=EXTI_Line14; //指定中断线为   EXTI_Line14

 EXTI_InitStruct.EXTI_LineCmd=ENABLE; //设置指定中断线的状态为ENABLE(开启状态)

 EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt; //设置指定中断线的模式为中断模式

 EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling; //设置指定触发信号的有效边沿为下降沿触发

 EXTI_Init(&EXTI_InitStruct);

 //配置NVIC

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //指定中断分组为分组2(2位抢占2位响应)

 NVIC_InitTypeDef NVIC_InitStruct;

 NVIC_InitStruct.NVIC_IRQChannel=EXTI15_10_IRQn; //设置指定中断通道为EXTI15_10

 NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; //设置指定中断通道使能

 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1; //设置抢占优先级

 NVIC_InitStruct.NVIC_IRQChannelSubPriority=1; //设置响应优先级

 NVIC_Init(&NVIC_InitStruct);

}

//中断函数

void EXTI15_10_IRQHandler(void)

{

 //判断中断线14的中断标志位是不是1

 if(EXTI_GetITStatus(EXTI_Line14)==SET)

 {

  NumberCount++;

  EXTI_ClearITPendingBit(EXTI_Line14);//清除中断标志位

 }

}

//返回计数次数函数

uint16_t NumberCount_Get(void)

{

 return NumberCount;

}

infrared_count.h文件

#ifndef __INFRERED_COUNT_H

#define __INFRERED_COUNT_H

#include "stdint.h"

void Infrared_count_Init(void);

uint16_t NumberCount_Get(void);

#endif

main.c文件

#include "stm32f10x.h"

#include "delay.h"

#include "OLED.h"

#include "infrared_count.h"

int main (void)

 //初始化

 OLED_Init();

 Infrared_count_Init();

 OLED_ShowString(1,1,"Number_Counter:");

 while(1)

 {   

  OLED_ShowNum(2,1,NumberCount_Get(),5);

 }

}

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

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

相关文章

【机器学习】卷积和反向传播

一、说明 自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来,卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets,CNN 无处不在。 您是否想知道 CNN 的反向传播中会发生什么,特别是反向传播在 CNN 中的工作原理。…

Stream流学习笔记

Stream流 创建流中间操作1、filter2、map3、distinct4、sorted5、limit6、skip7、flatMap 终结操作1、forEach2、count3、max&min4、collect5、查找与匹配 创建流 单例集合&#xff1a;集合对象.stream() List<Integer> list new ArrayList<>(); Stream<…

C语言:详解操作符(下)

上一篇链接&#xff1a;C语言&#xff1a;详解操作符&#xff08;上&#xff09;摘要&#xff1a; 在上篇文章中&#xff0c;我们已经讲过位操作符等涉及二进制的操作符&#xff0c;这些有助于帮助我们后期理解数据如何在计算机中运算并存储&#xff0c;接下来本篇将更多的讲述…

mac docker 宿主机和容器间网络打通

动因 是这样&#xff0c;笔者最近满怀欣喜入手Docker&#xff0c;看着各种文章命令都是不断点头称道&#xff1a;“嗯嗯&#xff0c;不错不错”,在接下来终于准备大干一场的时候碰壁了&#xff0c;主要情况是说在Mac中跑了第一把的时候发现碰到&#xff0c;虚拟机和宿主机居然…

CentOS7下如何安装Nginx

一、Ngxin是什么 Nginx是一个开源的 Web 服务器&#xff0c;具有反向代理、负载均衡、缓存等功能。它可以作为 HTTP 服务器&#xff0c;将服务器上的静态文件&#xff08;如 HTML、图片&#xff09;通过 HTTP 协议展现给客户端&#xff0c;也可以实现动静分离&#xff0c;把动态…

【后端高频面试题--Nginx篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 后端高频面试题--Nginx篇 什么是Nginx&#xff1f;为什么要用Nginx&#xff1f;为什么Nginx性能…

FAST角点检测算法

FAST&#xff08;Features from Accelerated Segment Test&#xff09;角点检测算法是一种快速且高效的角点检测方法。它通过检测每个像素周围的连续像素集合&#xff0c;确定是否为角点。以下是 FAST 角点检测算法的基本流程&#xff1a; FAST 角点检测算法的基本过程主要包括…

精读《Web Components 的困境》

本期精读的文章是&#xff1a;The broken promise of Web Components 以及对这篇文章的回应: Regarding the broken promise of Web Components 1 引言 我为什么要选这篇文章呢&#xff1f; 就在前几天的 Google I/O 2017 上, Polymer 正式发布了 Polymer 2.0 版本. 来看…

HTTP基本概念-HTTP 是什么?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP 是什么? HTTP 是超文本传输协议&#xff0c;也就是HyperText Transfer Protocol。 能否详细解释「超文本传输协议」? HTTP 的名字「超文本协议传输」&#xff0c;它可以拆成三个部分: 超文本传输…

pycharm控制STM32F103ZET6拍照并上位机接收显示(OV7670、照相机、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 三、资源获取 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑&#xff0c;或者其他方法)上传图片数据至上位机 2,串口2(波特…

Java语法学习反射

Java语法学习反射 大纲 基本介绍class的介绍 具体案例 1. 基本介绍 流程图&#xff08;程序在计算机的阶段&#xff09; 反射的主要的类 这个提高效率不大 2. class的介绍 对于第三点&#xff1a;首先类只会加载一次&#xff0c;得到的class的对象&#xff0c;也只有一…

Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试

1、采用程序配置关闭“内核模块验证” 默认配置文件“stm32mp1_atk_defconfig”路径为“arch/arm/configs”; 使用VSCode打开默认配置文件“stm32mp1_atk_defconfg”&#xff0c;然后将下面的4条语句屏蔽掉&#xff0c;如下&#xff1a; CONFIG_MODULE_SIGy CONFIG_MODULE_…

【C语言】实现双向链表

目录 &#xff08;一&#xff09;头文件 &#xff08;二&#xff09; 功能实现 &#xff08;1&#xff09;初始化 &#xff08;2&#xff09;打印链表 &#xff08;3&#xff09; 头插与头删 &#xff08;4&#xff09;尾插与尾删 &#xff08;5&#xff09;指定位置之后…

STM32 + ESP8266,连接阿里云 上报/订阅数据

&#xff08;文章正在编辑中&#xff0c;一点点地截图操作过程&#xff0c;估计要拖拉两三天&#xff09; 一、烧录MQTT固件 ESP8266出厂时&#xff0c;默认是AT固件。连接阿里云&#xff0c;需要使用MQTT固件。 1、独立EPS8266模块的烧录方法 2、魔女开发板&#xff0c;板载…

‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序

遇到 vue-cli-service 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 的错误时&#xff0c;通常意味着Vue CLI没有被正确安装或配置在项目中。这可能是因为node_modules目录缺失了必要的包&#xff0c;或者局部安装的Vue CLI没有被正确设置到系统的PATH环境…

洛谷: P1308 [NOIP2011 普及组] 统计单词数

前言: 这道题没理解清题目表达意思&#xff0c;我开始想的是用map来记录个数&#xff0c;然后一个变量记录一开始出现的单词位置&#xff0c;不挺简单的吗&#xff0c;然后....就AC了2个..从错误提示能看到个数没啥问题&#xff0c;但是第一个单词位置不对&#xff0c;看了新样…

【51单片机】AT24C02(江科大、爱上半导体)

一、AT24C02 1.AT24C02介绍 AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息 存储介质:E2PROM 通讯接口:12C总线 容量:256字节 2.引脚即应用电路 本开发板AT24C02原理图 12C地址全接地,即全为0 WE接地,没有写使能 SCL接P21 S…

Microsoft Excel 加载数据分析工具

Microsoft Excel 加载数据分析工具 1. 打开 Excel&#xff0c;文件 -> 选项2. 加载项 -> 转到…3. 分析工具库、分析工具库 - VBA4. 打开 Excel&#xff0c;数据 -> 数据分析References 1. 打开 Excel&#xff0c;文件 -> 选项 2. 加载项 -> 转到… ​​​ 3…

不安全的 HTTP请求 漏洞原理以及修复方法

漏洞名称&#xff1a;不安全的HTTP方法、危险的HTTP方法 漏洞描述&#xff1a;不安全的HTTP方法一般包括&#xff1a;TRACE、PUT、DELETE、COPY 等。其中最常见的为TRACE方法可以回显服务器收到的请求&#xff0c;主要用于测试或诊断&#xff0c;恶意攻击者可以利用该方法进行…

【Java程序设计】【C00270】基于Springboot的moba类游戏攻略分享平台(有论文)

基于Springboot的moba类游戏攻略分享平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏攻略分享平台 本系统分为系统功能模块、管理员功能模块、以及用户后台功能模块。 系统功能模块&#xff1a;在平台首…