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

5.外部中断

中断初始化配置步骤:

  1. IO口初始化配置

  2. 开启中断总允许EA

  3. 打开某个IO口的中断允许

  4. 打开IO口的某一位的中断允许

  5. 配置该位的中断触发方式

中断函数:

#pragma vector = PxINT_VECTOR
__interrupt void 函数名(void){}

#pragma vector = PxINT_VECTOR
__interrupt void 函数名(void){}

image-20230927151133992

中断配置寄存器

IENx中断使能寄存器

image-20230927151945997

image-20230927151707935

image-20230927151729874

如果使能P0口中断,可直接使用P0IE = 1,但是使能P1/P2口中断,不能直接对单独的某一位进行操作,需要进行或操作开启,如IEN2 |= 0x10; // 0001 0000 相当于P1IE=1

PxIEN 通用 I/O 中断

通用 I/O 引脚设置为输入后,可以用于产生中断。中断可以设置在外部信号的上升或下降沿触发。P0、P1或 P2 端口都有中断使能位

image-20230927152159630

PICTL 中断边缘寄存器

image-20230927152314064

PxIFG中断状态标志寄存器

当中断条件发生在 I/O 引脚之一上面,P0-P2 中断标志寄存器 P0IFG、P1IFG 或 P2IFG 中相应的中断状态标志将设置为 1。不管引脚是否设置了它的中断使能位,中断状态标志都被设置。当中断已经执行,中断状态标志被清除,该标志写入 0。

【硬件置1,软件清0】

image-20230927152543051

IO口中断状态标志

image-20230927155024657

image-20230927155039070

中断服务函数

#pragma vector = PxINT_VECTOR

PxINT_VECTOR:需要根据自己选择的中断口自行改动(0,1,2)

其他部分不要改动

__interrupt void 函数名(void){ //清除中断标志 PxIFG=0; PxIF=0;}

自己根据需求编写函数名,然后根据打开的中断IO口,进行标志位清零

中断样例

#include<iocc2530.h>void main(){P0SEL &= ~0x20;//P0_5设置为通用I/O口 1101 1111P0DIR &= ~0x20;//P0_5设置为输入P0INP &= ~0x20;//P0_5设置为上下拉P2INP &= ~0X20;//P0_5设置为上拉  //1.打开中断总允许EA=1;//2.打开P0口中断允许P0IE = 1;/*P1IE如果要设置为1,不能直接用P1IE = 1,不能直接使用位操作应该使用 IEN2 |= 0x10; // 0001 0000 相当于P1IE=1*///3.打开组内的某一位中断允许P0IEN |= 0x20;//P0_5中断打开 0010 0000//4.设置触发方式PICTL |=0x01;//把P0这一组配置成下降沿触发while(1);
}#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void){ //P0_ISR为函数名,可自行定义if(P0IFG & 0x20)//判断P0_5是否发生中断{}//清除中断标志 P0IFG=0;P0IF=0;
}

#include<iocc2530.h>

void main(){

P0SEL &= ~0x20;//P0_5设置为通用I/O口 1101 1111
P0DIR &= ~0x20;//P0_5设置为输入
P0INP &= ~0x20;//P0_5设置为上下拉
P2INP &= ~0X20;//P0_5设置为上拉

//1.打开中断总允许
EA=1;
//2.打开P0口中断允许
P0IE = 1;

/*
P1IE如果要设置为1,不能直接用P1IE = 1,不能直接使用位操作
应该使用 IEN2 |= 0x10; // 0001 0000 相当于P1IE=1
*/

//3.打开组内的某一位中断允许
P0IEN |= 0x20;//P0_5中断打开 0010 0000
//4.设置触发方式
PICTL |=0x01;//把P0这一组配置成下降沿触发

while(1);
}

#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void){ //P0_ISR为函数名,可自行定义
if(P0IFG & 0x20)//判断P0_5是否发生中断
{
}
//清除中断标志
P0IFG=0;
P0IF=0;
}
Zigbee这个名字的灵感来源于蜂群的交流方式:蜜蜂通过Z字形飞行来通知发现的食物的位置、距离和方向等信息。Zigbee联盟便以此作为这个新一代无线通信技术的名称。 [2]
蜜蜂在发现花丛后会通过一种特殊的肢体语言来告知同伴新发现的食物源位置等信息,这种肢体语言就是ZigZag行舞蹈,是蜜蜂之间一种简单传达信息的方式。借此意义Zigbee作为新一代无线通讯技术的命名。在此之前ZigBee也被称为“HomeRF Lite”、“RF- EasyLink”或“fireFly”无线电技术,统称为ZigBee。
简单的说,ZigBee是一种高可靠的无线数传网络,类似于CDMA和GSM网络。ZigBee数传模块类似于移动网络基站。通讯距离从标准的75m到几百米、几公里,并且支持无限扩展。
ZigBee是一个由可多到65535个无线数传模块组成的一个无线数传网络平台,在整个网络范围内,每一个ZigBee网络数传模块之间可以相互通信,每个网络节点间的距离可以从标准的75m无限扩展。
与移动通信的CDMA网或GSM网不同的是,ZigBee网络主要是为工业现场自动化控制数据传输而建立,因而,它必须具有简单,使用方便,工作可靠,价格低的特点。而移动通信网主要是为语音通信而建立,每个基站价值一般都在百万元人民币以上,而每个ZigBee“基站”却不到1000元人民币。
每个ZigBee网络节点不仅本身可以作为监控对象,例如其所连接的传感器直接进行数据采集和监控,还可以自动中转别的网络节点传过来的数据资料。除此之外,每一个ZigBee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。

相关文章:

5.外部中断

中断初始化配置步骤&#xff1a; IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数&#xff1a; #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…...

Mydb数据库问题

1、请简要介绍一下这个基于 Java 的简易数据库管理系统。它的主要功能是什么&#xff1f; TM&#xff08;Transaction Manager&#xff09;&#xff1a;事务管理器&#xff0c;用于维护事务的状态&#xff0c;并提供接口供其他模块查询某个事务的状态。DM&#xff08;Data Man…...

部署并应用ByteTrack实现目标跟踪

尽管YOLOv8已经集成了ByteTrack算法&#xff0c;但在这里我还是想利用ByteTrack官网的代码&#xff0c;自己实现目标跟踪。 要想应用ByteTrack算法&#xff0c;首先就要从ByteTrack官网上下载并安装。虽然官网上介绍得很简单&#xff0c;只需要区区6行代码&#xff0c;但对于国…...

MacOS怎么配置JDK环境变量

1 输入命令看是否配置了JDk 的环境变量&#xff1a;echo $JAVA_HOME 要是什么也没输出 证明是没配置 2 输入命令编辑 sudo vim ~/.bash_profile 然后按 i &#xff0c;进入编辑模式&#xff0c;粘贴下面的代码&#xff0c;注意&#xff1a;JAVA_HOME后面路径需要改成自己的版…...

Spring Boot 开发16个实用的技巧

当涉及到使用Spring Boot开发应用程序时&#xff0c;以下是16个实用的技巧&#xff1a; 1. **使用Spring Initializr**&#xff1a;Spring Initializr是一个快速创建Spring Boot项目的工具&#xff0c;可以帮助您选择项目依赖和生成项目骨架。 2. **自动配置**&#xff1a;Sp…...

《机器学习实战》学习记录-ch2

PS: 个人笔记&#xff0c;建议不看 原书资料&#xff1a;https://github.com/ageron/handson-ml2 2.1数据获取 import pandas as pd data pd.read_csv(r"C:\Users\cyan\Desktop\AI\ML\handson-ml2\datasets\housing\housing.csv")data.head() data.info()<clas…...

lv7 嵌入式开发-网络编程开发 07 TCP服务器实现

目录 1 函数介绍 1.1 socket函数 与 通信域 1.2 bind函数 与 通信结构体 1.3 listen函数 与 accept函数 2 TCP服务端代码实现 3 TCP客户端代码实现 4 代码优化 5 练习 1 函数介绍 其中read、write、close在IO中已经介绍过&#xff0c;只需了解socket、bind、listen、acc…...

mysql技术文档--阿里巴巴java准则《Mysql数据库建表规约》--结合阿丹理解尝试解读--国庆开卷

阿丹&#xff1a; 国庆快乐呀大家&#xff01; 在项目开始前一个好的设计、一个健康的表关系&#xff0c;不仅会让开发变的有趣舒服&#xff0c;也会在后期的维护和升级迭代中让系统不断的成长。那么今天就认识和解读一下阿里的准则&#xff01;&#xff01; 建表规约 表达是…...

Qt+openCV学习笔记(十六)Qt6.6.0rc+openCV4.8.1+emsdk3.1.37编译静态库

前言&#xff1a; 有段时间没来写文章了&#xff0c;趁编译库的空闲&#xff0c;再写一篇记录文档 WebAssembly的发展逐渐成熟&#xff0c;即便不了解相关技术&#xff0c;web前端也在不经意中使用了相关技术的库&#xff0c;本篇文档记录下如何编译WebAssembly版本的openCV&…...

JUC第十四讲:JUC锁: ReentrantReadWriteLock详解

JUC第十四讲&#xff1a;JUC锁: ReentrantReadWriteLock详解 本文是JUC第十四讲&#xff1a;JUC锁 - ReentrantReadWriteLock详解。ReentrantReadWriteLock表示可重入读写锁&#xff0c;ReentrantReadWriteLock中包含了两种锁&#xff0c;读锁ReadLock和写锁WriteLock&#xff…...

在vue3中使用vite-svg-loader插件

vite-svg-loader插件可以让我们像使用vue组件那样使用svg图&#xff0c;使用起来超级方便。 安装 npm install vite-svg-loader --save-dev使用 import svgLoader from vite-svg-loaderexport default defineConfig({plugins: [vue(), svgLoader()] })组件里使用 在路径后加…...

国庆10.4

QT实现TCP服务器客户端 服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器头文件 #include <QTcpSocket> //客户端头文件 #include <QList> //链表容器 #include <QMe…...

2023/8/12 下午8:41:46 树状控件guilite

2023/8/12 下午8:41:46 树状控件guilite 2023/8/12 下午8:42:08 树状控件(Tree View)是一种常见的图形用户界面(GUI)元素,它通常用于显示层次结构数据或文件系统的目录结构。Guilite 是一个轻量级的跨平台 GUI 库,支持多种控件,包括树状控件。 在 Guilite 中使用树状…...

BL808学习日志-2-LVGL for M0 and D0

一、lvgl测试环境 对拿到的M1S_DOCK开发板进行开发板测试&#xff0c;博流的官方SDK是支持M0和D0两个内核都进行测试的&#xff1b;但是目前只实现了M0的LVGLBenchmark&#xff0c;测试D0内核中发现很多莫名其妙的问题。一会详细记录。 使用的是开发板自带的SPI显示屏&#xff…...

treectrl类封装 2023/8/13 下午4:07:35

2023/8/13 下午4:07:35 treectrl类封装 2023/8/13 下午4:07:53 TreeCtrl 类是一个常用的图形用户界面控件,用于实现树形结构的展示和交互。以下是一个简单的 TreeCtrl 类的封装示例: python import wxclass MyTreeCtrl(wx.TreeCtrl):def __init__(self, parent):super()…...

Android学习之路(20) 进程间通信

IPC IPC为 (Inter-Process Communication) 缩写&#xff0c;称为进程间通信或跨进程通信&#xff0c;指两个进程间进行数据交换的过程。安卓中主要采用 Binder 进行进程间通信&#xff0c;当然也支持其他 IPC 方式&#xff0c;如&#xff1a;管道&#xff0c;Socket&#xff0…...

机器学习——KNN算法流程详解(以iris为例)

、 目 录 前情说明 问题陈述 数据说明 KNN算法流程概述 代码实现 运行结果 基于可视化的改进 可视化代码 全部数据可视化总览 分类投票结果 改进后最终代码 前情说明 本书基于《特征工程入门与入门与实践》庄家盛 译版P53页K最近邻&#xff08;KNN&#xff09;算…...

国庆假期day5

作业&#xff1a;请写出七层模型及每一层的功能&#xff0c;请绘制三次握手四次挥手的流程图 1.OSI七层模型&#xff1a; 应用层--------提供函 表示层--------表密缩 会话层--------会话 传输层--------进程的接收和发送 网络层--------寻主机 数据链路层----相邻节点的可靠传…...

ES6中的let、const

let ES6中新增了let命令&#xff0c;用来声明变量&#xff0c;和var类似但是也有一定的区别 1. 块级作用域 只能在当前作用域内使用&#xff0c;各个作用域不能互相使用&#xff0c;否则会报错。 {let a 1;var b 1; } console.log(a); // 会报错 console.log(b); // 1为什…...

Python 列表操作指南3

示例&#xff0c;将新列表中的所有值设置为 ‘hello’&#xff1a; newlist [hello for x in fruits]表达式还可以包含条件&#xff0c;不像筛选器那样&#xff0c;而是作为操纵结果的一种方式&#xff1a; 示例&#xff0c;返回 “orange” 而不是 “banana”&#xff1a; …...

三个要点,掌握Spring Boot单元测试

单元测试是软件开发中不可或缺的重要环节&#xff0c;它用于验证软件中最小可测试单元的准确性。结合运用Spring Boot、JUnit、Mockito和分层架构&#xff0c;开发人员可以更便捷地编写可靠、可测试且高质量的单元测试代码&#xff0c;确保软件的正确性和质量。 一、介绍 本文…...

【nginx】Nginx配置:

文章目录 一、什么是Nginx&#xff1a;二、为什么使用Nginx&#xff1a;三、如何处理请求&#xff1a;四、什么是正向代理和反向代理&#xff1a;五、nginx 启动和关闭&#xff1a;六、目录结构&#xff1a;七、配置文件nginx.conf&#xff1a;八、location&#xff1a;九、单页…...

CSS3与HTML5

box-sizing content-box&#xff1a;默认&#xff0c;宽高包不含边框和内边距 border-box&#xff1a;也叫怪异盒子&#xff0c;宽高包含边框和内边距 动画&#xff1a;移动translate&#xff0c;旋转、transform等等 走马灯&#xff1a;利用动画实现animation&#xff1a;from…...

redis的简单使用

文章目录 环境安装与配置redis发布-订阅相关命令redis发布-订阅的客户端编程redis的订阅发布的例子 环境安装与配置 sudo apt-get install redis-server # ubuntu命令安装redis服务ubuntu通过上面命令安装完redis&#xff0c;会自动启动redis服务&#xff0c;通过ps命令确认&a…...

Windows下启动freeRDP并自适应远端桌面大小

几个二进制文件 xfreerdp # Linux下的&#xff0c;an X11 Remote Desktop Protocol (RDP) client which is part of the FreeRDP project wfreerdp.exe # Windows下的&#xff0c;freerdp2.0 主程序&#xff0c;freerdp3.0将废弃 sdl-freerdp.exe # Windows下的&…...

ES6中的数值扩展

1. 二进制和八进制的表示法 二进制和八进制的前缀分别为0b(或0B)和0o(或0O)表示 在ES5的严格模式下&#xff0c;八进制不再允许使用前缀0表示 如果要将0b和0x前缀的字符串数值转为十进制&#xff0c;要使用Number方法 Number(0b111); // 7 Number(0o10); // 82. Number.isF…...

自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能

自定义注解实现Redis分布式锁、手动控制事务和根据异常名字或内容限流的三合一的功能 文章目录 [toc] 1.依赖2.Redisson配置2.1单机模式配置2.2主从模式2.3集群模式2.4哨兵模式 3.实现3.1 RedisConfig3.2 自定义注解IdempotentManualCtrlTransLimiterAnno3.3自定义切面Idempote…...

Linux:minishell

目录 1.实现逻辑 2.代码及效果展示 1.打印字符串提示用户输入指令 2.父进程拆解指令 3.子进程执行指令,父进程等待结果 4.效果 3.实现过程中遇到的问题 1.打印字符串的时候不显示 2.多换了一行 3.cd路径无效 4.优化 1.ll指令 2.给文件或目录加上颜色 代码链接 模…...

STM32驱动步进电机

前言 &#xff08;1&#xff09;本章介绍用stm32驱动42步进电机&#xff0c;将介绍需要准备的硬件器材、所需芯片资源以及怎么编程及源代码等等。 &#xff08;2&#xff09;实验效果&#xff1a;按下按键&#xff0c;步进电机顺时针或逆时针旋转90度。 &#xff08;3&#xff…...

计算机视觉——飞桨深度学习实战-深度学习网络模型

深度学习网络模型的整体架构主要数据集、模型组网以及学习优化过程三部分&#xff0c;本章主要围绕着深度学习网络模型的算法架构、常见模型展开了详细介绍&#xff0c;从经典的深度学习网络模型以CNN、RNN为代表&#xff0c;到为了解决显存不足、实时性不够等问题的轻量化网络…...

huntt wordpress主题/重庆seo服务

题目连接 用固定面额的货币拼指定的钱数&#xff0c;这道题挺面熟的。嗯。。。想起了18年提高组的货币系统 这一类题乍看挺难的&#xff0c;第一反应是个搜索&#xff0c;枚举所有的排列情况&#xff0c;并记录最小的结果。但是这样的暴力搜索复杂度爆炸&#xff0c;很大可能会…...

物流建设网站总结/百度网盘资源搜索

点蓝字关注我们大胆热爱Hello Everybody【火影秘术小课堂】开课了本期的主题【c盘满了怎么办】火粉们赶紧搬好小板凳&#xff0c;准备上课吧1c盘为什么会满在如今这个信息爆炸增长的时代&#xff0c;我们要看的信息越来越多&#xff0c;也就意味着在电脑里有意无意留存的资料也…...

wordpress自带搜索引擎/今日国内最新新闻

关于制作数据集的label&#xff1a; 在P7视频的最后&#xff0c;写了这段&#xff0c;用来重新命名文件的label的img 和 label 的管理方法&#xff0c;有两种&#xff1a; 1、用img所在文件夹的名称&#xff0c;作为label&#xff1b; 2、img在一个文件夹&#xff0c;label在另…...

番禺网页设计公司/厦门seo代理商

1,请问一个完整的操作系统&#xff0c;应该包含哪些部分&#xff1f;答&#xff1a;两部分&#xff1a;&#xff08;1&#xff09;核心与其提供的接口工具。&#xff08;2&#xff09;利用核心提供的接口工具所开发的软件。2&#xff0c;UNIX 是谁写出来的&#xff1f;GNU计划是…...

廊坊网站制作潍坊公司电话/推广软文范例大全500

1.final修饰&#xff1a;数据、方法和类1) 修饰属性&#xff0c;表示属性【只能赋值一次】(1)基本类型&#xff1a;值不能被修改&#xff1b;(2)引用类型&#xff1a;引用不可以被修改2) 修饰方法&#xff0c;表示方法不可以重写&#xff0c;但是可以被子类访问(如果方法不是 p…...

如何租用服务器做网站/长安seo排名优化培训

MPI简介在程序中&#xff0c;不同的进程需要相互的数据交换&#xff0c;特别是在科学计算中&#xff0c;需要大规模的计算与数据交换&#xff0c;集群可以很好解决单节点计算力不足的问题&#xff0c;但在集群中大规模的数据交换是很耗费时间的&#xff0c;因此需要一种在多节点…...