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

第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id=728461040949

配套资料获取:https://renesas-docs.100ask.net

瑞萨MCU零基础入门系列教程汇总: https://blog.csdn.net/qq_35181236/article/details/132779862


第21章 事件链接控制器ELC

本章目标

  • 了解ELC基本概念和RA6M5处理器的ELC模块;
  • 学会使用RASC配置ELC链接不同外设,并触发设备工作;

21.1 ELC简介

21.1.1 ELC的特征

ELC:Event Link Controller,事件链接控制器。它用于链接芯片上两个不同的外设,通过外设A的某个中断事件触发外设B去执行某个动作,这个过程是通过芯片内部硬件信号的连接完成的,不需要占用CPU资源。因而ELC可以帮助开发者完成许多同步触发的工作,而不会引起CPU资源的过多浪费。

ELC支持的事件类型多达219种。当产生了一个ELC事件的时候,也可以触发激活DTC功能。

21.1.2 ELC的系统框图

ECL的系统框图如下图所示:

  1. 事件控制器

  2. ELC相关寄存器:用户可以配置和观察这些寄存器来调试ELC。

  3. ELC支持连接的事件:并不是所有的中断事件都能够用于ELC,只有框图中显示的这些中断事件可以。

1.1.1 支持的事件

ELC支持互相连接触发的外设模块见下表:

  • 外部中断IRQ触发定时器GPT开始计数;
  • 定时器开始计数后,当计数溢出事件产生时,同步触发ADC转换和CTSU的测量模式;
  • 串口中断触发DTC开启数据传输;

这所有的触发操作都是无需CPU干预处理。

21.2 ELC模块的配置

21.2.1 配置ELC模块

ELC本身只是一个连接控制器,不涉及双方设备的设置。具体模块的触发条件,需要去设置该模块。因而在RASC中,ELC的配置很简单,只需要在FSP的“Stacks”中添加ELC的Stack即可,无需额外配置,如下图所示:

击“New Stack”后在“System”中找到“Event Link Controller(r_elc)”添加ELC模块即可(在用户代码里,再去打开、使能它即可)。

对于ELC的Stack配置,只能设置它的名字(使用默认值即可):

21.2.2 配置信息解读

使用RASC配置ELC并生成代码后,在common_data.c中生成一个elc_instance_t结构体类型的全局变量g_elc,它包括ELC控制参数成员、ELC配置信息、ELC控制接口成员。代码如下:

const elc_instance_t g_elc = {.p_ctrl = &g_elc_ctrl,.p_api  = &g_elc_on_elc,.p_cfg  = &g_elc_cfg
};
  • g_elc_ctrl:elc_instance_ctrl_t结构体类型,表明ELC的状态,原型如下:
typedef struct st_elc_instance_ctrl
{uint32_t     open;void const * p_context;
} elc_instance_ctrl_t;
  • g_elc_on_elc:ELC的控制接口,elc_api_t结构体指针,指向g_elc_on_elc结构体。g_elc_on_elc在r_elc.c中实现:
const elc_api_t g_elc_on_elc =
{.open                  = R_ELC_Open,.close                 = R_ELC_Close,.softwareEventGenerate = R_ELC_SoftwareEventGenerate,.linkSet               = R_ELC_LinkSet,.linkBreak             = R_ELC_LinkBreak,.enable                = R_ELC_Enable,.disable               = R_ELC_Disable,
};

这些控制API将会在下一小节进行介绍讲解。

  • g_elc_cfg:ELC的控制配置信息,它是elc_cfg_t结构体指针,此结构体原型如下:
typedef struct st_elc_cfg
{elc_event_t const link[ELC_PERIPHERAL_NUM]; ///< Event link register (ELSR) settings
} elc_cfg_t;

此结构体在elc_data.c中生成,以本章外部中断触发定时器开始计数为例,生成的列表内容如下:

const elc_cfg_t g_elc_cfg = {.link[ELC_PERIPHERAL_GPT_A] = ELC_EVENT_ICU_IRQ6, /* ICU IRQ6 (External pin interrupt 6) */.link[ELC_PERIPHERAL_GPT_B] = ELC_EVENT_ICU_IRQ1, /* ICU IRQ1 (External pin interrupt 1) */.link[ELC_PERIPHERAL_GPT_C] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_D] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_E] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_F] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_G] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_H] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC0] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC0_B] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC1] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC1_B] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_DAC0] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_DAC1] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT1] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT2] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT3] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT4] = ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_CTSU] = ELC_EVENT_NONE, /* No allocation */
};
  • 第02行:IRQ6触发ELC_GPTA类事件;
  • 第03行:IRQ1触发ELC_GPTB类事件;

ELC_GPT_A~H是指ELC允许的GPT事件类型名称,如下表所示:

21.2.3 API接口及其使用

在上一小节已经了解到ELC的控制接口,其原型是elc_api_t结构体,如下:

typedef struct st_elc_api
{fsp_err_t (* open)(elc_ctrl_t * const p_ctrl, elc_cfg_t const * const p_cfg);fsp_err_t (* close)(elc_ctrl_t * const p_ctrl);fsp_err_t (* softwareEventGenerate)(elc_ctrl_t * const p_ctrl, elc_software_event_t event_num);fsp_err_t (* linkSet)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral, elc_event_t signal);fsp_err_t (* linkBreak)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral);fsp_err_t (* enable)(elc_ctrl_t * const p_ctrl);fsp_err_t (* disable)(elc_ctrl_t * const p_ctrl);
} elc_api_t;

本小节就对这些操作API进行一一介绍讲解。

  1. 打开ELC设备
fsp_err_t (* open)(elc_ctrl_t * const p_ctrl, elc_cfg_t const * const p_cfg);
  • p_ctrl:elc_ctrl_t结构体类型,此结构体实际上是void类型,实际会指向elc_instance_ctrl_t结构体全局变量g_elc_ctrl;
  • p_cfg:elc_cfg_t结构体类型,实际会指向elc_cfg_t全局常量g_elc_cfg;

open函数的主要功能就是将事件连接列表的设置值,用来初始化ELC模块。可以参考以下代码来初始化ELC设备:

fsp_err_t err = g_elc.p_api->open(g_elc.p_ctrl, g_elc.p_cfg);
if(FSP_SUCCESS != err)
{printf("Function:%s\tLine:%d\r\n", __FUNCTION__, __LINE__);return;
}
  1. 关闭ELC设备
fsp_err_t (* close)(elc_ctrl_t * const p_ctrl);

关闭ELC函数实现的功能比较简单,就是将代表ELC的状态成员变量设置为CLOSED,并且失能ELC设备:

/* Set state to closed */
p_instance_ctrl->open = ELC_CLOSED;/* Globally disable the operation of the Event Link Controller */
R_ELC->ELCR = ELC_ELCR_ELCON_DISABLE;
  1. 使能和失能ELC功能
fsp_err_t (* enable)(elc_ctrl_t * const p_ctrl);
fsp_err_t (* disable)(elc_ctrl_t * const p_ctrl);

只有在使能了ELC的情况下,外设模块的事件触发才能生效。而使能、失能ELC实际上就是对ELC的ELCR寄存器进行控制:

/* Globally enable ELC function */
R_ELC->ELCR = ELC_ELCR_ELCON_ENABLE;/* Globally disable ELC function */
R_ELC->ELCR = ELC_ELCR_ELCON_DISABLE;
  1. 设置事件链接
fsp_err_t (* linkSet)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral, elc_event_t signal);

在初始化设置列表之后,如果要额外添加事件,可以使用这个API。支持的外设列表在r_elc_api.h中的elc_peripheral_t枚举中定义,支持的事件信号类型在bsp_elc.h中的elc_event_t枚举定义。

用户可以参考以下代码使用这个函数:

fsp_err_t err = R_ELC_LinkSet(&g_elc_ctrl, ELC_PERIPHERAL_DAC0, ELC_EVENT_ICU_IRQ10);
if(FSP_SUCCESS != err)
{printf("Function:%s\tLine:%d\r\n", __FUNCTION__, __LINE__);return;
}
  1. 断开事件链接
fsp_err_t (* linkBreak)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral);

断开连接只需要传入需要断开连接的设备序号即可。

  1. 件触发产生事件
fsp_err_t (* softwareEventGenerate)(elc_ctrl_t * const p_ctrl, elc_software_event_t event_num);

ELC支持的软件触发事件只有两种,在r_elc_api.h中定义的elc_software_event_t枚举类型里列出了这2种事件:

typedef enum e_elc_software_event
{ELC_SOFTWARE_EVENT_0,              ///< Software event 0ELC_SOFTWARE_EVENT_1,              ///< Software event 1
} elc_software_event_t;

21.3 外部中断触发GPT启停

本实验会使用到按键外部中断、串口的printf和GPT,请读者阅读前面的章节参考配置相关外设模块。

21.3.1 设计目的

使用两个外部中断来触发GPT定时器计数的开始和停止,让用户了解ELC的使用方法。

21.3.2 模块配置

  1. 外部中断

外部中断在FSP的“Pins”中选好ICU的引脚后,配置各自的Stack如下图示:

本次实验选用的外部中断是IRQ1和IRQ6,使用的引脚是P205和P000。通过ELC使用IRQ触发GPT计数,是通过内部硬件的信号连接来实现的,所以不需要使用外部中断的中断服务函数及其中断回调函数。

  1. LC外设

在前文已经说明,ELC的配置除了模块名称外,并不需要做额外配置。

  1. GPT定时器

GPT定时器的配置除了通道、周期值、计数类型等常规配置如下图所示:

本章的实验还需要配置GPT模块的Input项中关于开启计数触发源和停止计数触发源的设置:

对于开启触发源和停止触发源,里面的可选项是一样的,本次实验使用IRQ6触发定时器开始计数,使用IRQ1触发定时器停止计数,因而“Start Source”和“Stop Source”的配置如下图所示:

image12

21.3.3 驱动程序

  1. 外部中断

外部中断IRQ信号会直接链接触发GPT,因而只需要在RASC中配置IRQ模块,不需要在代码中初始化IRQ。

  1. GPT初始化函数

对于GPT的初始化,只需要调用open、enable函数指针:

void GPTDrvInit(void)
{{fsp_err_t err = g_timer0.p_api->open(g_timer0.p_ctrl, g_timer0.p_cfg);if(FSP_SUCCESS != err)printf("Function:%s\tLine:%d\r\n", __FUNCTION__, __LINE__);}{fsp_err_t err = g_timer0.p_api->enable(g_timer0.p_ctrl);if(FSP_SUCCESS != err)printf("Function:%s\tLine:%d\r\n", __FUNCTION__, __LINE__);}
}

瑞萨对于GPT的enable函数解释是:“Enables external event triggers that start, stop, clear, or capture the counter.”,也就是使能外部中断事件触发计数器的开始、停止、清除和捕获。

  1. GPT中断回调函数和溢出等待函数

GPT的中断回调函数,只是设置一个溢出标志值,函数代码如下:

static volatile bool gGPTOverflow = false;
/* Callback function */
void gpt_timer0_callback(timer_callback_args_t *p_args)
{/* TODO: add your own code here */if(p_args->event == TIMER_EVENT_CYCLE_END)gGPTOverflow = true;
}void GPTDrvWaitOverflow(void)
{while(!gGPTOverflow);gGPTOverflow = false;
}
  1. ELC初始化函数

对于ELC的初始化,只需要调用open、enable函数指针,代码如下:

void ELCDrvInit(void)
{{fsp_err_t err = g_elc.p_api->open(g_elc.p_ctrl, g_elc.p_cfg);if(FSP_SUCCESS != err){printf("Function:%s\tLine:%d\r\n", __FUNCTION__, __LINE__);return;}}{fsp_err_t err = g_elc.p_api->enable(g_elc.p_ctrl);if(FSP_SUCCESS != err){printf("Function:%s\tLine:%d\r\n", __FUNCTION__, __LINE__);return;}}
}`

21.3.4 测试程序

本次实验的测试程序比较简单,每次GPT计数溢出后就计数一次,串口将计数值打印,代码如下:

void ELCAppTest(void)
{ELCDrvInit();UARTDrvInit();GPTDrvInit();printf("\r\nStart ELC Test!\r\n");uint32_t tick = 0;while(1){GPTDrvWaitOverflow();printf("Tick: %d\r", (int)tick++);}
}

21.3.5 测试结果

在hal_entry.c中的hal_entry()函数中调用测试函数,将编译出来的二进制文件烧写到板子上运行。按下开发板的按键后,就会触发开启定时器开始计数,将开发板的P205引脚和GND短接后就会触发定时器停止计数:


本章完

相关文章:

第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…...

(二十八)大数据实战——Flume数据采集之kafka数据生产与消费集成案例

前言 本节内容我们主要介绍一下flume数据采集和kafka消息中间键的整合。通过flume监听nc端口的数据&#xff0c;将数据发送到kafka消息的first主题中&#xff0c;然后在通过flume消费kafka中的主题消息&#xff0c;将消费到的消息打印到控制台上。集成使用flume作为kafka的生产…...

vue3:22、vue-router的使用

import { createRouter, createWebHistory } from vue-router//history模式&#xff1a;createWebHistory //hash模式&#xff1a;createWebHashHistory//vite中的环境变量 import.meta.env.BASE_URL 就是vite.config.js中的base配置项 const router createRouter({history:…...

深入理解JVM虚拟机第五篇:一些常用的JVM虚拟机(二)

文章目录 一&#xff1a;JRockit VM的介绍 二&#xff1a;J9 VM的介绍 三&#xff1a;KVM和CDC/CLDC Hotspot 四&#xff1a;Azul VM的介绍 五&#xff1a;Liquid VM的介绍 六&#xff1a;Apache Harmoney 七&#xff1a;Microsoft JVM 八&#xff1a;Taobao JVM 九&a…...

导数公式及求导法则

目录 基本初等函数的导数公式 求导法则 有理运算法则 复合函数求导法 隐函数求导法 反函数求导法 参数方程求导法 对数求导法 基本初等函数的导数公式 基本初等函数的导数公式包括&#xff1a; C0(x^n)nx^(n-1)(a^x)a^x*lna(e^x)e^x(loga(x))1/(xlna)(lnx)1/x(sinx)cos…...

SpringMVC系列(六)之JSON数据返回以及异常处理机制

目录 前言 一. JSON概述 二. JSON数据返回 1. 导入pom依赖 2. 添加配置文件&#xff08;spring-mvc.xml&#xff09; 3. ResponseBody注解使用 4. 效果展示 5. Jackson介绍 三. 全局异常处理 1. 为什么要全局异常处理 2. 异常处理思路 3. 异常处理方式一 4. 异常处…...

民安智库(北京第三方窗口测评)开展汽车消费者焦点小组座谈会调查

民安智库近日开展了一场汽车消费者焦点小组座谈会&#xff0c;旨在深入了解目标消费者对汽车功能的需求和消费习惯&#xff0c;为汽车企业提供有针对性的解决方案。 在焦点小组座谈会中&#xff0c;民安智库公司&#xff08;第三方市容环境指数测评&#xff09;邀请了一群具有…...

【CVPR2021】MVDNet论文阅读分析与总结

Challenge&#xff1a; 现有的目标检测器主要融合激光雷达和相机&#xff0c;通常提供丰富和冗余的视觉信息 利用最先进的成像雷达&#xff0c;其分辨率比RadarNet和LiRaNet中使用的分辨率要细得多&#xff0c;提出了一种有效的深度后期融合方法来结合雷达和激光雷达信号。 MV…...

IDEA指定Maven settings file文件未生效

背景&#xff1a;在自己电脑上配置的时候&#xff0c;由于公司项目和我自己的项目的Maven仓库不一致&#xff0c;我就在项目中指定了各自的Maven配置文件。但是我发现公司的项目私有仓库地址IDEA总是识别不到&#xff01; 俩个配置文件分别是&#xff1a; /Users/sml/Mine/研发…...

swift UI 和UIKIT 如何配合使用

SwiftUI和UIKit可以在同一个iOS应用程序中配合使用。它们是两个不同的用户界面框架&#xff0c;各自有自己的优势和特点。在现实开发中&#xff0c;很多iOS应用程序并不是一开始就完全采用SwiftUI或UIKit&#xff0c;而是根据需要逐步引入SwiftUI或者使用两者共存。 SwiftUI的…...

c语言练习题55:IP 地址⽆效化

IP 地址⽆效化 题⽬描述&#xff1a; 给你⼀个有效的 IPv4 地址 address &#xff0c;返回这个 IP 地址的⽆效化版本。 所谓⽆效化 IP 地址&#xff0c;其实就是⽤ "[.]" 代替了每个 "."。 • ⽰例 1&#xff1a; 输⼊&#xff1a;address "1.1.1.…...

nvidia-persistenced 常驻

本文地址&#xff1a;blog.lucien.ink/archives/542 发现每次执行 nvidia-smi 都特别慢&#xff0c;发现是需要 nvidia-persistenced 常驻才可以&#xff0c;这个并不会在安装完驱动之后自动配置&#xff0c;需要手动设置一个自启。 cat <<EOF >> /etc/systemd/sy…...

leetcode 42, 58, 14(*)

42. Trapping Rain Water 1.暴力解法&#xff08;未通过&#xff09; class Solution { public:int trap(vector<int>& height) {int n height.size();int res 0;for(int i0; i<n; i){int r_max 0, l_max 0;for(int j i; j<n; j)r_max max(r_max, heigh…...

SpringCloud-微服务CAP原则

接上文 SpringCloud-Config配置中心 到此部分即微服务的入门。 总的来说&#xff0c;数据存放的节点数越多&#xff0c;分区容忍性就越高&#xff0c;但要复制更新的次数就越多&#xff0c;一致性就越难保证。同时为了保证一致性&#xff0c;更新所有节点数据所需要的时间就…...

K8S:Yaml文件详解

目录 一.Yaml文件详解 1.Yaml文件格式 2.YAML 语法格式 二.Yaml文件编写及相关概念 1.查看 api 资源版本标签 2.yaml编写案例 &#xff08;2&#xff09;Deployment类型编写nginx服务 (3&#xff09;k8s集群中的port介绍 &#xff08;5&#xff09;快速编写yaml文件 …...

机器人连续位姿同步插值轨迹规划—对数四元数、b样条曲线、c2连续位姿同步规划

简介&#xff1a;Smooth orientation planning is benefificial for the working performance and service life of industrial robots, keeping robots from violent impacts and shocks caused by discontinuous orientation planning. Nevertheless, the popular used quate…...

三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析

三维模型3DTile格式轻量化压缩的遇到常见问题与处理方法分析 三维模型的轻量化压缩是一项技术挑战&#xff0c;特别是在处理复杂的3DTile格式时。下面列举了一些处理过程中可能遇到的常见问题以及相应的处理方法&#xff1a; 模型精度损失&#xff1a;在进行压缩处理时&#x…...

2023-简单点-开启防火墙后,ping显示请求超时;windows共享盘挂在不上

情景描述 树莓派 挂载 windows共享盘 之前一直可以&#xff0c;突然有一天不行了 ping xxxx不通了 一查&#xff0c;或许是服务器被同事开了防火墙&#xff0c;默认关闭了ping的回显 操作&#xff1a; 开启ping回显cmd ping通了&#xff0c;但是挂载还是不行, 显示 dmesg命…...

华为Java工程师面试题

常见问题&#xff1a; 什么是Java虚拟机&#xff08;JVM&#xff09;&#xff1f;它与现实中的计算机有什么不同&#xff1f;Java中的基本数据类型有哪些&#xff1f;它们的范围是什么&#xff1f;什么是引用类型&#xff1f;Java中的引用类型有哪些&#xff1f;什么是对象&am…...

大数据Flink(七十四):SQL的滑动窗口(HOP)

文章目录 SQL的滑动窗口(HOP) SQL的滑动窗口(HOP) 滑动窗口定义:滑动窗口也是将元素指定给固定长度的窗口。与滚动窗口功能一样,也有窗口大小的概念。不一样的地方在于,滑动窗口有另一个参数控制窗口计算的频率(滑动窗口滑动的步长)。因此,如果滑动的步长小于窗口大…...

Hystrix和Sentinel熔断降级设计理念

目录 1 基本介绍2 Hystrix信号量和线程池区别2.1 信号量模式2.2 线程池模式2.3 注意 3 Sentinel介绍 1 基本介绍 Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现&#xff0c;例如请求响应时间长或异常比例升高的时候&#xff0c;则对这个资源…...

获取Windows 10中的照片(旧版)下载

Windows 10中的新版照片应用&#xff0c;目前发现无法直接打开部分iOS设备上存储的照片。需要使用照片&#xff08;旧版&#xff09;才行。 但目前应用商店中无法直接搜索到照片&#xff08;旧版&#xff09;&#xff0c;因此笔者提供如下链接&#xff0c;可以直接访问并呼出W…...

【Redis】Redis作为缓存

【Redis】Redis常见面试题&#xff08;2&#xff09; 文章目录 【Redis】Redis常见面试题&#xff08;2&#xff09;1. 缓存2. Redis作为缓存2.1 缓存雪崩2.2 缓存穿透2.3 缓存击穿2.4 缓存雪崩、缓存穿透、缓存击穿的区别2.5 缓存预热2.6 如何保证缓存和MySQL双写一致 【Redis…...

IDEA(2023)解决运行乱码问题

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;无 &#x1f33c…...

零基础学前端(二)用简单案例去理解 HTML 、CSS 、JavaScript 概念

该篇适用于从零基础学习前端的小白 初学者不懂代码得含义也要坚持模仿逐行敲代码&#xff0c;以身体感悟带动头脑去理解新知识 一、导言 HTML&#xff0c;CSS&#xff0c;JavaScript 都是单独的语言&#xff1b;他们构成前端技术基础&#xff1b; &#xff08;1&#xff09;HTM…...

线性矩阵不等式(LMI)在控制理论中的应用

目录 &#xff08;一&#xff09;Matlab中的LMI处理工具包 &#xff08;二&#xff09;为什么LMI成为控制理论领域重要工具&#xff1f; &#xff08;三&#xff09;LMI在与Lyapunov不等式的关系 &#xff08;1&#xff09;线性矩阵不等式 &#xff08;2&#xff09;线性矩阵…...

如何在Python爬虫程序中使用HTTP代理?

在进行网络爬虫时&#xff0c;我们经常需要使用代理服务器来隐藏自己的真实IP地址&#xff0c;以避免被目标网站封禁或限制访问。本文将介绍如何将HTTP代理配置到Python爬虫程序中使用。 什么是HTTP代理&#xff1f; HTTP代理是一种网络代理&#xff0c;它充当客户端和服务器之…...

ARM架构指令集--专用指令

四、状态寄存器专用指令 CPSR寄存器-N Z C V T为0时 为ARM状态 F为0时 为开启FIQ状态 I为0时 为开启IRQ状态 图1 图2 一开始都是SVC指令&#xff0c;因为在操作系统启动的时候&#xff0c;在做一些初始化的操作&#xff0c;不允许被打断 图3 复位后CPSR寄存器为0xD3--…...

免费IP类api接口:含ip查询、ip应用场景查询、ip代理识别、IP行业查询...

免费IP类api接口&#xff1a;含ip查询、ip应用场景查询、ip代理识别… IP归属地-IPv6区县级&#xff1a;根据IP地址&#xff08;IPv6版本&#xff09;查询归属地信息&#xff0c;包含国家、省、市、区县和运营商等信息。IP归属地-IPv6城市级&#xff1a;根据IP地址&#xff08…...

Android Studio 中AGP ,Gradle ,JDK,SDK都是什么?

当进行 Android 开发时&#xff0c;以下是关键概念和工具的解释&#xff1a; Android Gradle Plugin&#xff1a; Android Gradle Plugin 是一个由 Google 提供的构建工具&#xff0c;它与 Gradle 配合使用来构建和打包 Android 应用。它提供了一组任务和功能&#xff0c;使开发…...