【微机原理与接口技术】定时控制接口
文章目录
- 8253的引脚和工作方式
- 内部结构和引脚
- 工作方式
- 方式0:计数结束中断
- 方式1:可编程单稳脉冲
- 方式2:周期性负脉冲输出
- 方式3:方波发生器
- 方式4:软件触发的单次负脉冲输出
- 方式5:硬件触发的单次负脉冲输出
- 各种工作方式的输出波形
- 8253的编程
- 8253的方式控制字
- 写入计数值
- 读取计数值
- 8253的应用
- 8253作为系统时钟
- 8253作分频器
- 8253实现定时中断
- 8253的综合应用
8253的引脚和工作方式
定时功能的实现方法:
- 软件延时——利用微处理器执行一个延时程序段实现
- 不可编程的硬件定时——采用分频器、单稳电路或简易定时电路控制定时时间
- 可编程的硬件定时——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路
内部结构和引脚
8253 有 3个相互独立的16位计数器通道,称为计数器0、计数器1和计数器2,每个计数器通道的结构完全相同
每个计数器有6种工作方式
按二进制(最大计数值可达65535)或十进制(BCD码)计数(最大计数值可达9999)
(8254是8253的改进型,主要区别在于接入的最高频率,8254最高为10MHz,而8253为2M)
计数器结构:
计数初值存于预置寄存器;
在计数过程中,减法计数器的值不断递减(因此,当初值为0时,则计数值最大),而预置寄存器中的预置不变。
**输出锁存器(当前计数输出寄存器)**用于写入锁存命令时,锁定当前计数值
计数器的三个引脚:
-
CLK时钟输入信号
在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
-
GATE门控输入信号
控制计数器的启动或停止,可分成电平控制和上升沿控制两种类型。一般而言,当其为高电平时计数器开始工作;为低电平时计数器暂停计数;
-
OUT计数器输出信号
当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
8253/8254与处理器的接口:
- D0 ~ D7数据线
- A0 ~ A1地址线
- R D ‾ \overline{RD} RD 读信号
- W R ‾ \overline{WR} WR 写信号
- C S ‾ \overline{CS} CS 片选信号
工作方式
8253有6种工作方式,由方式控制字确定
每种工作方式的过程类似:
-
设定工作方式
-
设定计数初值
-
硬件启动(方式1和方式5需要)
【启动方式由GATE端信号的形式决定】
- 软件启动 ➡️ GATE端为高电平
- 硬件启动 ➡️ GATE端有一个上升沿
-
计数初值进入减1计数器
-
每输入一个时钟计数器减1的计数过程
-
计数过程结束
六种工作方式:
-
方式0:计数结束中断
工作过程:在这种方式下,当CPU写入控制字CW后,OUT立即变低电平(即使没写入初值),当写入初值后计数器开始计数,计数结束后OUT变为高电平
① 设定工作方式
② 设定计数初值
③ 方式0 无需硬件启动,不需要这个过程
④ 计数值送入计数器
⑤ 每输入一个时钟计数器减1的计数过程
⑥ 计数过程结束方式0的特点:
- 计数器只计一遍数;
- 计数是在写入计数值后的CLK的下降沿开始的;
- 计数过程中,当GATE=0时,计数暂停;GATE=1时,接着计数;
- 在计数过程中,若改变初值,计数器将重新开始计数;
-
方式1:可编程单稳脉冲
工作过程:当CPU写入控制字后(WR上升沿),OUT保持高电平,写入初值后并不开始计数,直到门控脉冲GATE启动后的下一个CLK的下降沿才开始计数
① 设定工作方式
② 设定计数初值
③ 硬件启动(GATE端有一个上升沿)
④ 计数值送入计数器
⑤ 每输入一个时钟计数器减1的计数过程
⑥ 计数过程结束方式1的特点:
- 若计数初值为N,则单拍脉冲宽度为N个输入脉冲间隔
- 当计数到0后,可再次由GATE触发启动下一次计数
- 在计数过程中,可通过GATE脉冲再触发。在再触发脉冲上升沿后的CLK的下降沿,计数器重新开始计数
- 在计数过程中,若改变初值,计数器不受影响。若再次由GATE触发,则以新的计数值开始计数(即计数值是下次有效)
-
方式2:周期性负脉冲输出
工作过程:当CPU写入控制字后(WR上升沿),OUT变为高电平,写入初值后立即自动开始计数,在计数过程中OUT一直保持高电平,直到计数器减到 1 时OUT变为低,经过一个CLK后,OUT又变为高,且计数器重新开始工作
方式2的特点:
- 不用重新设置计数初值,就能够连续计数,输出固定频率的脉冲
- 在计数过程中,若GATE=0计数暂停,当GATE恢复为高后的下一个CLK脉冲,计数器恢复初值重新计数
- 在计数过程中,若改变初值,计数器不受影响。在下次计数时,则以新的计数值开始计数(即计数值是下次有效)
-
方式3:方波发生器
工作过程:当CPU写入控制字后,OUT变为高电平,写入初值后立即自动开始计数,在计数过程中OUT保持高;当计数到一半值时OUT变低,直至计数器到0时OUT又变高,重新开始下次计数
方式3的特点:
- 当N为偶数时占空比=1/2,N为奇数时输出的高电平比低电平多一个CLK周期
- 不用重新设置计数初值,就能够连续计数,输出固定频率的方波脉冲
- 在计数过程中,若GATE=0计数暂停,当GATE恢复为高后的下—个CLK脉冲,计数器恢复初值重新计数
- 在计数过程中,若改变初值,计数器不受影响。在下次计数时,则以新的计数值开始计数(即计数值是下次有效)
-
方式4:软件触发的单次负脉冲输出
工作过程:当CPU写入控制字后,OUT变为高电平,写入初值后立即开始计数(相当于软件启动),当计数到 0 时OUT变低,经过一个CLK后OUT又变高,停止计数,在下—次写入初值后才重新计数
方式4的特点:
- 若设置初值为N,在门控脉冲触发经过N个CLK才输出一个负脉冲
- 在计数过程中,若GATE=0禁止计数,当GATE恢复为高后的下—个CLK脉冲,计数器重新开始计数
- 在计数过程中,若改变初值则按新值重新开始计数
-
方式5:硬件触发的单次负脉冲输出
工作过程:当CPU写入控制字后,OUT变为高电平,写入初值后计数器并不开始计数,当GATE门控信号的上升沿后才开始计数(硬件启动),计数到 0 时OUT变低,经过一个CLK后OUT又变高,停止计数
方式5的特点:
- 若设置初值为N,在门控脉冲触发经过N个CLK才输出一个负脉冲
- 在计数过程中使用GATE脉冲,使计数器重新开始计数,但对输出状态没有影响
- 在计数过程中,若改变初值,只要没有GATE脉冲触发不影响计数过程。写入新的初值后,若有GATE脉冲触发,则立即按新值开始计数
各种工作方式的输出波形
8253的编程
8253加电后的工作方式不确定,必须经过初始化编程,才能正常工作
8253的编程基本顺序为:
- 写入控制字
- 写入计数初值
- 计数器开始工作
- (读取计数值)
8253的方式控制字
在对8253的初始化编程中,先向其控制字寄存器写入一个控制字,以规定8253的工作方式
控制字格式如下:
【例】某个8253的计数器0、1、2端口和控制端口地址依次是40H~43H,设置其中计数器0为方式0,采用二进制计数,先低后高写入计数值
MOV AL,30H
;方式控制字:30H=00 11 000 0B
OUT 43H,AL
;写入控制端口:43H
写入计数值
8253确定工作方式后,接着应向所选择的计数器中写入相应的计数值,则8253开始在输入频率 CLK 的作用下,自动进行减1计数。一般减至0时计数停止,此时在out 引脚输出一个变化的电平
计数初值 N 的计算公式为: N = f i n ÷ f o u t N=f_{in}÷f_{out} N=fin÷fout 即 N=输入频率÷输出频率
【例】某个8253的计数器0、1、2端口和控制端口地址依次是40H~43H;设置计数器0为方式1,采用二进制计数,写入计数初值:1024(=400H)
MOV AL,00110010B
OUT 43H,AL ;写入方式控制字
MOV AX,1024 ;计数初值:1024(=400H)
;写入计数器0地址:40H,如下
OUT 40h,AL ;写入低字节计数初值
MOV AL,AH
OUT 40h,AL ;写入高字节计数初值
【例】设8253的通道1工作于方式5,按二进制计数,计数初值为4000H,则它的初始化程序段为?
MOV AL,01101010B ;通道1,只读写高字节,方式5,二进制计数
OUT 43H,AL ;写入方式控制字
MOV AL,40H
OUT 41H,AL ;送计数初值
读取计数值
8253任一通道的计数值,CPU可用输入指令读取
CPU读到的是执行输入指令瞬间计数器的当前值
但8253的计数器是16位的,所以要分两次读至CPU
因此,若不锁存的话,则在前后两次执行输入指令的过程中,计数值可能已经变化了
要锁存当前计数值有两种方法:
- 利用GATE信号使计数过程暂停
- 向8253写入一个方式控制字,令8253通道的锁存器锁存。之后,再从计数器I/O地址中读取锁存的计数值
读取计数值,要注意读写格式和计数数制
【例】对计数器1初始化,使其工作于方式3,采用二进制格式计数,计数初值为2000H。设8253的端口地址为 80H~83H
(1)编写初始化程序
(2)若要在计数过程中读出当前计数值,又如何编写程序?
【解(1)】
MOV AL,76H ;01110110B
OUT 83H,AL
MOV AX,2000H
OUT 81H,AL
MOV AL,AH
OUT 81H,AL
【解(2)】
MOV AL,40H(01000000B) ;向通道1写锁存命令
OUT 83H,AL
IN AL,81H ;先读低8位
XCHG AL,AH ;暂存AL
IN AL,81H ;再读高8位
XCHG AL,AH ;利用交换指令使计数值的低字节到AL,高字节到AH
8253的应用
8253作为系统时钟
【例】设某工业控制系统中通过8253的2#通道输出500Hz的连续方波作为系统时钟信号,已知8253的输入 CLK= 1MHz ,CS=320~323H,设计8253的控制程序
【分析】
-
因为要产生连续的方波信号,因此选择8253的工作方式3;
-
因为输出的方波频率为500Hz,所以写入的初值为:1000000/500=2000(7D0);
这里之所以这样除,是因为:在方式3中,我们输入的初值 N,相当于是对输入频率的N分频
-
2000>256,因此必须写入16位计数值,写入顺序为先写低8位,后写高8位
【解】
MOV DX,323H
MOV AL,0B6H
OUT DX,AL
MOV DX,322H
MOV AX,7D0H
OUT DX,AL
MOV AL,AH
OUT DX,AL
8253作分频器
【例】设8253的输入CLK1=1000Hz,CS=10~13H,要求OUT1输出为高电平和低电平均为20ms方波。设计8253的控制程序
【分析】
- 因为要产生连续的方波信号,因此选择8253的工作方式3;
- 因为输出的方波频率为1000/(20+20)=25Hz,所以写入的初值为 1000/25 = 40
- 40<256,因此写入时选择一个字节写入
MOV AL,56h ;0101 0110
OUT 13H,AL
MOV AL,40
OUT 11H,AL
8253实现定时中断
【例】设某应用系统中,系统提供一个10KHz的时钟信号接入8253的CLK0,即输入CLK0=10KHz, 8253的OUT0接入8259的IR1,要求每隔10ms完成一次扫描键盘的工作,已知CS=10~13H
【分析】
- 因为每隔10ms 8253要产生一个中断脉冲,所以选择8253的工作方式2
- 因为要每10ms完成一次动作,即动作频率为 1000/10=100Hz,所以写入的初值为10K/100=100
- 100<256,因此写入时选择一个字节写入
MOV AL,15h ;0001 0100
OUT 13H,AL
MOV AL,100
OUT 10H,AL
8253的综合应用
试按如下要求将8253的初始化程序补充完整,已知8253的计数器0~2和控制字I/O地址依次为204H~207H
① 使计数器1工作在方式0,仅用8位二进制计数,计数初值为128
② 使计数器0工作在方式1,按BCD码(十进制)计数,计数值为3000
③ 使计数器2工作在方式2,计数值为02F0H
【解】⬇️
相关文章:
【微机原理与接口技术】定时控制接口
文章目录 8253的引脚和工作方式内部结构和引脚工作方式方式0:计数结束中断方式1:可编程单稳脉冲方式2:周期性负脉冲输出方式3:方波发生器方式4:软件触发的单次负脉冲输出方式5:硬件触发的单次负脉冲输出各种…...
AG32 FPGA 的 Block RAM 资源:M9K 使用
1. 概述 AG32 FPGA 包含了 4 个 M9K 块,每个 M9K 块的容量为 8192 bits,总计为 4 个 M9K(4K bytes)。这使得 AG32 的内部存储非常适合嵌入式应用,能够有效地利用片上资源。 M9K 参数 参考自《AGRV2K_Rev2.0.pdf》。…...
第3天:阿里巴巴微服务解决方案概览
一、阿里巴巴微服务解决方案概述 阿里巴巴在微服务领域贡献了多个开源项目,形成了完整的微服务解决方案,广泛应用于分布式系统开发。其中,Spring Cloud Alibaba 是基于 Spring Cloud 构建的一站式微服务解决方案,集成了多个阿里巴…...
在Ubuntu上安装RabbitMQ教程
1、安装erlang 因为rabbitmq是基于erlang开发的,所以要安装rabbitmq,首先需要安装erlang运行环境 apt-get install erlang执行命令查是否安装成功:erl,疯狂 Ctrlc 就能退出命令行 2、安装rabbitmq 1、查看erlang与rabbitmq版本…...
WPF 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法
本章讲述:引发类型为“System.Windows.Forms.AxHostInvalidActiveXStateException”的异常 解决办法。 这几天在做一个WPF功能时,因为引用了第三方的OCX控件,一般来说一个对象只要实例化就行了, 但是在引用这个控件时就报引发类型为“System.…...
Vue 3中导航守卫(Navigation Guard)结合Axios实现token认证机制
在Vue 3中,导航守卫(Navigation Guard)用于拦截路由的变化,可以在用户访问页面前进行检查。结合Axios进行token认证机制时,我们可以通过导航守卫在路由跳转时,检查用户的认证状态,确保用户有有效…...
代码随想录算法【Day28】
Day28 122.买卖股票的最佳时机 II 最终利润是可以分解的 假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[2] - prices[1]) (prices[1] - prices[0])。 所以把利润分解为每天…...
【21】Word:德国旅游业务❗
目录 题目 NO1.2.3 NO4 NO5.6 NO7 NO8.9.10.11 题目 NO1.2.3 F12:另存为布局→页面设置→页边距:上下左右选中“德国主要城市”→开始→字体对话框→字体/字号→文本效果:段落对话框→对齐方式/字符间距/段落间距 NO4 布局→表对话框…...
基于 MDL 行情插件的中金所 L1 数据处理最佳实践
本文介绍了如何通过 DolphinDB 的 MDL 插件订阅并处理中金所 Level 1 实时数据。首先,文章简要介绍了 MDL 插件的功能和作用。它是基于 MDL 官方提供的行情数据服务 C SDK(即 TCP 版本 MDL )实现,提供了实时数据获取和处理的能力。…...
在 vscode + cmake + GNU 工具链的基础上配置 JLINK
安装 JLINK JLINK 官网链接 下载安装后找到安装路径下的可执行文件 将此路径添加到环境变量的 Path 中。 创建 JFlash 项目 打开 JFlash,选择新建项目 选择单片机型号 在弹出的窗口中搜索单片机 其他参数根据实际情况填写 新建完成: 接下来设置…...
靶机复现-pikachu靶机文件包含漏洞
本篇文章旨在为网络安全渗透测试靶机复现学习。通过阅读本文,读者将能够对渗透pikachu靶场文件包含漏洞复现有一定的了解 原文学习链接 CSDN博主:One_Blanks主页地址 靶机资源下载 PHPStudy pikachu 一、前言 文件包含漏洞是编程中的一种安全隐患&a…...
如何写出优秀的提示词?ChatGPT官方的六种方法
使用ChatGPT时,提示词(Prompt)的质量直接影响到生成结果的好坏。ChatGPT官方文档中提供了六种优化提示词的方法,这些方法能够帮助用户更好地利用ChatGPT,提升其生成内容的准确性和实用性。本文将结合中文习惯和新的示例…...
【数据结构】顺序表和链表
线性表 线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线…...
StarRocks强大的实时数据分析
代码仓库:https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始:StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化…...
20250121在Ubuntu20.04.6下使用Linux_Upgrade_Tool工具给荣品的PRO-RK3566开发板刷机
sudo upgrade_tool uf update.img 20250121在Ubuntu20.04.6下使用Linux_Upgrade_Tool工具给荣品的PRO-RK3566开发板刷机 2025/1/21 11:54 百度:ubuntu RK3566 刷机 firefly rk3566 ubuntu upgrade_tool烧写详解 https://wiki.t-firefly.com/Core-3566JD4/03-upgrad…...
python学opencv|读取图像(四十一 )使用cv2.add()函数实现各个像素点BGR叠加
【1】引言 前序已经学习了直接在画布上使用掩模,会获得彩色图像的多种叠加效果,相关文章链接为: python学opencv|读取图像(四十)掩模:三通道图像的局部覆盖-CSDN博客 这时候如果更进一步,直接…...
150 Linux 网络编程6 ,从socket 到 epoll整理。listen函数参数再研究
一 . 只能被一个client 链接 socket例子 此例子用于socket 例子, 该例子只能用于一个客户端连接server。 不能用于多个client 连接 server socket_server_support_one_clientconnect.c /* 此例子用于socket 例子, 该例子只能用于一个客户端连接server。…...
学习ASP.NET Core的身份认证(基于JwtBearer的身份认证9)
测试数据库中只有之前记录温湿度及烟雾值的表中数据较多,在该数据库中增加AppUser表,用于登录用户身份查询,数据库表如下所示: 项目中安装SqlSugarCore包,然后修改控制器类的登录函数及分页查询数据函数ÿ…...
【数据分析(二)】初探 Pandas
目录 引言1. 基本数据结构1.1. Series 的初始化和简单操作1.2. DataFrame 的初始化和简单操作1.2.1. 初始化与持久化1.2.2. 读取查看1.2.3. 行操作1.2.4. 列操作1.2.5. 选中筛查 2. 数据预处理2.0. 生成样例表2.1. 缺失值处理2.2. 类型转换和排序2.3. 统计分析 3. 数据透视3.0.…...
大数据与AI驱动的商业查询平台:企业市场拓展的变革引擎
在竞争白热化的商业环境里,企业对准确市场信息的高效获取能力,直接关系到业务拓展的成败。商业查询平台借助大数据和人工智能技术,为企业提供精准客户筛选、市场拓展分析以及风险评估服务,正逐渐成为企业市场开拓的得力助手。本文…...
k8s namespace绑定节点
k8s namespace绑定节点 1. apiserver 启用准入控制 PodNodeSelector2. namespace 添加注解 scheduler.alpha.kubernetes.io/node-selector3. label node 1. apiserver 启用准入控制 PodNodeSelector vim /etc/kubernetes/manifests/kube-apiserver.yaml spec:containers:- co…...
ChatGPT被曝存在爬虫漏洞,OpenAI未公开承认
OpenAI的ChatGPT爬虫似乎能够对任意网站发起分布式拒绝服务(DDoS)攻击,而OpenAI尚未承认这一漏洞。 本月,德国安全研究员Benjamin Flesch通过微软的GitHub分享了一篇文章,解释了如何通过向ChatGPT API发送单个HTTP请求…...
2024微短剧行业生态洞察报告汇总PDF洞察(附原数据表)
原文链接: https://tecdat.cn/?p39072 本报告合集洞察从多个维度全面解读微短剧行业。在行业发展层面,市场规模与用户规模双增长,创造大量高收入就业岗位并带动产业链升级。内容创作上,精品化、品牌化趋势凸显,题材走…...
【JavaSE】(8) String 类
一、String 类常用方法 1、构造方法 常用的这4种构造方法:直接法,或者传参字符串字面量、字符数组、字节数组。 在 JDK1.8 中,String 类的字符串实际存储在 char 数组中: String 类也重写了 toString 方法,所以可以直…...
算法竞赛之差分进阶——等差数列差分 python
目录 前置知识进入正题实战演练 前置知识 给定区间 [ l, r ],让我们把数组中的[ l, r ] 区间中的每一个数加上c,即 a[ l ] c , a[ l 1 ] c , a[ l 2] c , a[ r ] c; 怎么做?很简单,差分一下即可 还不会的小伙伴点此进入学习 进入正题 …...
细说STM32F407单片机电源低功耗StopMode模式及应用示例
目录 一、停止模式基础知识 1、进入停止模式 2、停止模式的状态 3、退出停止模式 4、SysTick定时器的影响 二、停止模式应用示例 1、示例功能和CubeMX项目配置 (1)时钟 (2)RTC (3)ADC1 …...
LeetCode hot 力扣热题100 二叉树的中序遍历(非递归)
以下是代码中每行的详细注释以及整体思路: class Solution { public:vector<int> inorderTraversal(TreeNode* root) {// 定义存储结果的向量,用于存储中序遍历结果vector<int> result;// 定义一个栈,存储节点和访问状态。pair的…...
Flink底层架构与运行流程
这张图展示了Flink程序的架构和运行流程。 主要组件及功能: Flink Program(Flink程序): 包含Program code(程序代码),这是用户编写的业务逻辑代码。经过Optimizer / Graph Builder(…...
人工智能之深度学习_[4]-神经网络入门
文章目录 神经网络基础1 神经网络1.1 神经网络概念1.1.1 什么是神经网络1.1.2 如何构建神经网络1.1.3 神经网络内部状态值和激活值 1.2 激活函数1.2.1 网络非线性因素理解1.2.2 常见激活函数1.2.2.1 Sigmoid 激活函数1.2.2.2 Tanh 激活函数1.2.2.3 ReLU 激活函数1.2.2.4 SoftMa…...
ASP.NET Blazor部署方式有哪些?
今天我们来说说Blazor的三种部署方式,如果大家还不了解Blazor,那么我先简单介绍下Blazor Blazor 是一种 .NET 前端 Web 框架,在单个编程模型中同时支持服务器端呈现和客户端交互性: ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用…...
Cyber Security 101-Security Solutions-Firewall Fundamentals(防火墙基础)
了解防火墙并亲身体验 Windows 和 Linux 内置防火墙。 任务1:防火墙的用途是什么 我们看到商场、银行、 餐馆和房屋。这些警卫被安置在 这些区域用于检查进出人员。这 维护此检查的目的是确保没有人在没有 被允许。这个警卫充当了他所在区域和访客之间的一堵墙。 …...
本地仓库管理之当前分支内的操作
以刚搭建好的git仓库为例,刚搭建完的仓库只有master分支,使用git branch查看当前的分支情况。 elfubuntu:~/work/example/hello$ git branch *所在分支为当前分支,即master分支 当前分支进行源码修改时简单流程图如下: 在当前分…...
【Unity3D】3D物体摆放、场景优化案例Demo
目录 PlaceManager.cs(放置管理类) Ground.cs(地板类) 和 GroundData.cs(地板数据类) 额外知识点说明 1、MeshFilter和MeshRenderer的Bounds区别 2、Gizmos 绘制一个平行于斜面的立方体 通过网盘分享的文件:PlaceGameDemo2.unitypackage 链接: https://pan.baid…...
ORACLE 12C开启EM EXPRESS过程
1 首先启动监听和关闭ORACLE/LINUX防火墙(这一步略过) lsnrctl start 2 然后查看http和https端口 select dbms_xdb_config.gethttpsport() from dual; select dbms_xdb_config.gethttpport() from dual; 3 设置em端口 exec dbms_xdb_config.setHTTPSPo…...
JavaScript学习笔记(1)
html 完成了架子, css 做了美化,但是网页是死的,我们需要给他注入灵魂,所以接下来我们需要学习 JavaScript,这门语言会让我们的页面能够和用户进行交互。 一、引入方式 1.内部脚本 将 JS 代码定义在 HTML 页面中 Jav…...
【PCL】Segmentation 模块—— 欧几里得聚类提取(Euclidean Cluster Extraction)
1、简介 PCL 的 Euclidean Cluster Extraction(欧几里得聚类提取) 是一种基于欧几里得距离的点云聚类算法。它的目标是将点云数据分割成多个独立的簇(clusters),每个簇代表一个独立的物体或结构。该算法通过计算点与点…...
CMake技术细节:解决未定义,提供参数
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
BUUCTF_Web(October 2019 Twice SQL injection)
October 2019 Twice SQL injection 知识点: 二次注入: 当用户提交的恶意数据被存入数据库后,应用程序再把它读取出来用于生成新的SQL语句时,如果没有相应的安全措施,是有可能发生SQL注入的,这种注入就叫…...
CentOS 下载软件时报Error: Failed to synchronize cache for repo ‘AppStream‘解决方法
下载软件时出现以下问题 直接把CentOS-AppStream.repo改个名字就行 cd /etc/yum.repos.d/ mv CentOS-AppStream.repo CentOS-AppStream.repo.bak就可以了 解决思路 把AI问遍,无人会,解决法 想要下载软件通通失败了,解决方法当然是问AI&am…...
LeetCode 2661. First Completely Painted Row or Column
🔗 https://leetcode.com/problems/first-completely-painted-row-or-column 题目 给一个 m*n 的二维数组,给一个 arr 的一纬数组元素由 [1, m * n] 组成遍历 arr,对二维数组中对应的元素进行染色返回执行到 arr 的第几个 index 的时候&…...
git的安装
目录 下载 安装 下载 前往官网下载安装包Git 点击dowmload选择适合自己的版本 安装 next 全选 是否修改库名,默认master 使用默认的 使用默认的 配置实验选项(新功能,可以不选) 不点 最后安装在d盘,programfile…...
C#性能优化技巧:利用Lazy<T>实现集合元素的延迟加载
一、C#中的Lazy C#中的Lazy<T>是一个泛型类,它实现了延迟加载(Lazy Initialization)的功能。延迟加载是指对象的创建被推迟,直到第一次被使用时才进行实例化。这对于大型或资源密集型对象的性能优化非常有用,因…...
Jenkins-基于Role的鉴权机制
jenkins自带了一些全局性的安全配置。 但无法通过job等相对细粒度的来控制使用者的权限。但它可以借助相关的插件实现细颗粒的权限控制。 插件: Role-based Authorization Strategy 需要在configure global security中配置授权策略如下: 保存后&#x…...
Python 并发编程的终极武器:使用 `multiprocessing` 模块征服计算密集型任务
Python 并发编程的终极武器:使用 multiprocessing 模块征服计算密集型任务 在Python中,由于全局解释器锁(GIL)的存在,多线程在处理CPU密集型任务时并不能真正实现并行,而是以交替执行的方式模拟并发,效率提升有限。为了充分利用多核CPU的优势,我们需要使用多进程。mul…...
vscode如何选用不同的python的解释器
在 VS Code 中设置 Python 的运行环境需要以下几个步骤,具体配置取决于你的开发环境和需求: 1. 安装必要工具 安装 Python: 确保已在系统中安装 Python(推荐通过 Python 官方网站 安装)。安装 VS Code 和 Python 扩展…...
MyBatis 注解开发详解
MyBatis 注解开发详解 MyBatis 支持使用注解来进行数据库操作。注解方式将 SQL 语句直接写在 Java 接口中,通过注解来完成 CRUD(增删改查)操作,省去了使用 XML 配置的繁琐步骤。这种方式适合简单项目或快速原型开发,因…...
【动态规划】--- 斐波那契数模型
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 第N个泰波那契数模型 📌 题目解析 第N个泰波那契数 题目要求的是泰波那契数,并非斐波那契数。 &…...
【EdgeAI实战】(1)STM32 边缘 AI 生态系统
【EdgeAI实战】(1)STM32 边缘 AI 生态系统 【EdgeAI实战】(1)STM32 边缘 AI 生态系统 1. STM32 边缘人工智能1.1 X-CUBE-AI 扩展包1.2 STM32 AI Model Zoo1.3 ST AIoT Craft 2. STM32N6 AI 生态系统 (STM32N6-AI)2.1 STM32N6 AI 产…...
【陕西省乡镇界】面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移内容测评
标题中的“陕西省乡镇界面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移.zip”表明这是一个地理信息系统(GIS)的数据集,专为陕西省的乡镇区域设计。该数据集以Shapefile(shp)格式提供,是GIS领…...
Fabric区块链网络搭建:保姆级图文详解
目录 前言1、项目环境部署1.1 基础开发环境1.2 网络部署 2、后台环境2.1、环境配置2.2、运行springboot项目 3、PC端3.1、安装依赖3.2、修改区块链网络连接地址3.3、启动项目 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加…...