HCIP【BGP综合实验】

目录

一、实验拓扑图:

二、实验要求:

三、实验思路:

四、实验步骤:

1、进行网段的子网划分(整个实验总共有19条网段):

(1)首先,根据实验要求,将172.16.0.0/16全部划分为掩码为24 的子网

(2)建邻环回:这个实验拓扑图中有8个路由,这8个路由之间都需要建邻,这里使用172.16.0.0/24进行划分:

(3)AS 2的骨干链路,使用172.16.1.0/24网段进行划分,因为每一条链路就只需要两个IP地址,我们为了节约IP地址,可以限制可以使用的IP地址数量为2个, AS 2 中有6个人骨干链路,所以需要6个/30的网段。

(4)业务环回:将剩余的子网划分给业务环回

2、配置IP地址:

3、AS 2内部配置OSPF协议

4、配置BGP协议

5、R1和R8配置VPN 隧道


一、实验拓扑图:

二、实验要求:

1、AS 1中存在两个环回,一个地址为192.168.1.0/24,该地址不能在任何协议中宣告;

AS 3中存在两个环回,一个地址为192.168.2.0/24,该地址不能在任何协议中宣告,最终要求这两个环回可以ping通

2、整个AS 2的IP地址为172.16.0.0/16,请合理划分;并且其内部配置OSPF协议;

3、AS间的骨干链路IP地址随意定制;

4、使用BGP协议让整个网络所有设备的环回可以互相访问;

5、减少路由条目数量,避免环路出现;

三、实验思路:

  1. 对于网段进行合理的划分中(尽可能的简洁);
  2. 配置IP地址(仔细,小心出错);
  3. 配置ospf协议(将AS 2内区域实现内网全通);
  4. 配置BGP协议(注意BPG联盟之间的配置,以及BGP路由反射器配置和BGP路由聚合);
  5. 减少路由条目,设置空接口避免环路出现;
  6. 在R1与R8之间搭建VPN隧道,实现两个业务网段可达;
  7. 实现全网可达;
  8. R1与R8之间配置VPN隧道,使R1和R8的业务网段不进行宣告就可以互通。

四、实验步骤:

1、进行网段的子网划分(整个实验总共有19条网段):

划分思路:

(1)首先,根据实验要求,将172.16.0.0/16全部划分为掩码为24 的子网

如下:

172.16.0.0/24

172.16.1.0/24

172.16.2.0/24

172.16.3.0/24

172.16.4.0/24

172.16.5.0/24

172.16.6.0/24

172.16.7.0/24

...

(2)建邻环回:这个实验拓扑图中有8个路由,这8个路由之间都需要建邻,这里使用172.16.0.0/24进行划分:

172.16.0.1/24  ---- R1

172.16.0.2/24  ---- R2

172.16.0.3/24  ---- R3

172.16.0.4/24  ---- R4

172.16.0.5/24  ---- R5

172.16.0.6/24  ---- R6

172.16.0.7/24  ---- R7

172.16.0.8/24  ---- R8

(3)AS 2的骨干链路,使用172.16.1.0/24网段进行划分,因为每一条链路就只需要两个IP地址,我们为了节约IP地址,可以限制可以使用的IP地址数量为2个, AS 2 中有6个人骨干链路,所以需要6个/30的网段。

172.16.1.0/24进行划分:

172.16.1.0/30

172.16.1.4/30

172.16.1.8/30

172.16.1.12/30

172.16.1.16/30

172.16.1.20/30

(4)业务环回:将剩余的子网划分给业务环回

172.16.3.0/24 --- R3

172.16.4.0/24 --- R4

172.16.5.0/24 --- R5

172.16.6.0/24 --- R6

172.16.7.0/24 --- R7

2、配置IP地址:

R1:

<Huawei>sys

[Huawei]sysn R1

[R1]int g0/0/0

[R1-GigabitEthernet0/0/0]ip add 12.1.1.1 24

[R1-GigabitEthernet0/0/0]int l0

[R1-LoopBack0]ip add 172.16.0.1 32

[R1-LoopBack0]int l1

[R1-LoopBack1]ip add 192.168.1.1 24

[R1-LoopBack1]q

[R1]dis ip int bri

 

R2:

<Huawei>sys

[Huawei]sysn R2

[R2]int g0/0/0

[R2-GigabitEthernet0/0/0]ip add 12.1.1.2 24

[R2-GigabitEthernet0/0/0]int g0/0/1

[R2-GigabitEthernet0/0/1]ip add 172.16.1.1 30

[R2-GigabitEthernet0/0/1]int g0/0/2

[R2-GigabitEthernet0/0/2]ip add 172.16.1.21 30

[R2-GigabitEthernet0/0/2]

[R2-GigabitEthernet0/0/2]int l0

[R2-LoopBack0]ip add 172.16.0.2 32

[R2-LoopBack0]q

[R2]dis ip int bri

 

R3:

<Huawei>sys

[Huawei]sysn R3

[R3]int g0/0/0

[R3-GigabitEthernet0/0/0]ip add 172.16.1.2 30

[R3-GigabitEthernet0/0/0]int g0/0/1

[R3-GigabitEthernet0/0/1]ip add 172.16.1.5 30

[R3-GigabitEthernet0/0/1]int l0

[R3-LoopBack0]ip add 172.16.0.3 32

[R3-LoopBack0]int l1

[R3-LoopBack1]ip add 172.16.3.3 24

[R3-LoopBack1]q

[R3]dis ip int bri

 

R4:

<Huawei>sys

[Huawei]sysn R4

[R4]int g0/0/0

[R4-GigabitEthernet0/0/0]ip add 172.16.1.6 30

[R4-GigabitEthernet0/0/0]int g0/0/1

[R4-GigabitEthernet0/0/1]ip add 172.16.1.9 30

[R4-GigabitEthernet0/0/1]int l0

[R4-LoopBack0]ip add 172.16.0.4 32

[R4-LoopBack0]int l1

[R4-LoopBack1]ip add 172.16.4.4 24

[R4-LoopBack1]q

[R4]dis ip int bri

 

R5:

<Huawei>sys

[Huawei]sysn R5

[R5]int g0/0/0

[R5-GigabitEthernet0/0/0]ip add 172.16.1.22 30

[R5-GigabitEthernet0/0/0]

[R5-GigabitEthernet0/0/0]int g0/0/1

[R5-GigabitEthernet0/0/1]ip add 172.16.1.17 30

[R5-GigabitEthernet0/0/1]int l0

[R5-LoopBack0]ip add 172.16.0.5 32

[R5-LoopBack0]int l1

[R5-LoopBack1]ip add 172.16.5.5 24

[R5-LoopBack1]q

[R5]dis ip int bri

 

R6:

<Huawei>sys

[Huawei]sysn R6

[R6]int g0/0/0

[R6-GigabitEthernet0/0/0]ip add 172.16.1.18 30

[R6-GigabitEthernet0/0/0]

[R6-GigabitEthernet0/0/0]int g0/0/1

[R6-GigabitEthernet0/0/1]ip add 172.16.1.13 30

[R6-GigabitEthernet0/0/1]int l0

[R6-LoopBack0]ip add 172.16.0.6 32

[R6-LoopBack0]int l1

[R6-LoopBack1]ip add 172.16.6.6 24

[R6-LoopBack1]q

[R6]dis ip int bri
R7:

<Huawei>sys

[Huawei]sysn R7

[R7]int g0/0/0

[R7-GigabitEthernet0/0/0]ip add 172.16.1.14 30

[R7-GigabitEthernet0/0/0]int g0/0/1

[R7-GigabitEthernet0/0/1]ip add 172.16.1.10 30

[R7-GigabitEthernet0/0/1]int g0/0/2

[R7-GigabitEthernet0/0/2]ip add 34.1.1.7 24

[R7-GigabitEthernet0/0/2]int l0

[R7-LoopBack0]ip add 172.16.0.7 32

[R7-LoopBack0]int l1

[R7-LoopBack1]ip add 172.16.7.7 24

[R7-LoopBack1]q

[R7]dis ip int bri

R8:

<Huawei>sys

[Huawei]sysn R8

[R8]int g0/0/0

[R8-GigabitEthernet0/0/0]ip add 34.1.1.8 24

[R8-GigabitEthernet0/0/0]int l0

[R8-LoopBack0]ip add 172.16.0.8 32

[R8-LoopBack0]int l1

[R8-LoopBack1]ip add 192.168.2.8 24

[R8-LoopBack1]q

[R8]dis ip int bri

3、AS 2内部配置OSPF协议

使用ospf宣告网段的时候,这里选择宣告总的大网段 172.16.0.0/16较为简便,或者也是可以选择精确宣告网段的,不过如果组网规模较大就会比较麻烦

R2:

[R2]ospf 1 router-id 2.2.2.2

[R2-ospf-1]a 0

[R2-ospf-1-area-0.0.0.0]net 172.16.0.0 0.0.255.255

[R2-ospf-1-area-0.0.0.0]q
R3:

[R3]ospf 1 router-id 3.3.3.3

[R3-ospf-1]a 0

[R3-ospf-1-area-0.0.0.0]net 172.16.0.0 0.0.255.255

[R3-ospf-1-area-0.0.0.0]q
R4:

[R4]ospf 1 router-id 4.4.4.4

[R4-ospf-1]a 0

[R4-ospf-1-area-0.0.0.0]net 172.16.0.0 0.0.255.255

[R4-ospf-1-area-0.0.0.0]q
R5:

[R5]ospf 1 router-id 5.5.5.5

[R5-ospf-1]a 0

[R5-ospf-1-area-0.0.0.0]net 172.16.0.0 0.0.255.255

[R5-ospf-1-area-0.0.0.0]q
R6:

[R6]ospf 1 router-id 6.6.6.6

[R6-ospf-1]a 0

[R6-ospf-1-area-0.0.0.0]net 172.16.0.0 0.0.255.255

[R6-ospf-1-area-0.0.0.0]q
R7:

[R7]ospf 1 router-id 7.7.7.7

[R7-ospf-1]a 0

[R7-ospf-1-area-0.0.0.0]net 172.16.0.0 0.0.255.255

[R7-ospf-1-area-0.0.0.0]q

测试一下ospf邻居是否建立起来,以及ospf路由表是否全了:

举例:

R2:

[R2]dis ospf peer bri

[R2]dis ip routing-table protocol ospf

R3:

[R3]dis ospf peer bri

[R3]dis ip routing-table protocol ospf

R6:

[R6]dis ospf peer bri

[R6]dis ip routing-table protocol ospf

测试通过!!!

测试一下在 AS 2内部是否全网可通:

举例:

R2的建邻环回 ping R7的建邻环回:

[R2]ping -a 172.16.0.2 172.16.0.7

R4的业务环回 ping R5的业务环回:

[R4]ping -a 172.16.4.4 172.16.5.5

测试通过!!!

4、配置BGP协议

同一个AS之间 配置EBGP,不同AS之间配置IBGP。AS 2内部有AS 64512 和AS 64513 构建BGP联盟。IBGP内部配置BGP反射器,来防止IBGP的水平分割。

R1:

[R1]bgp 1

[R1-bgp]peer 12.1.1.2 as 2
R2:

[R2]bgp 64512

[R2-bgp]confederation id 2                #声明自己的大号

[R2-bgp]confederation peer-as 64513       #声明自己的联盟邻居

[R2-bgp]peer 12.1.1.1 as 1                

[R2-bgp]peer 172.16.0.3 as 64512

[R2-bgp]peer 172.16.0.3 connect-interface l0 #修改更新源

[R2-bgp]peer 172.16.0.3 next-hop-local     #指定下一跳地址为本机

[R2-bgp]peer 172.16.1.22 as 64513

[R2-bgp]peer 172.16.1.22 next-hop-local    #BGP联盟之间同样要修改下一跳地址为本机

[R2-bgp]
R3:

[R3]bgp 64512

[R3-bgp]peer 172.16.0.2 as 64512

[R3-bgp]peer 172.16.0.2 connect-interface l0

[R3-bgp]peer 172.16.0.4 as 64512

[R3-bgp]peer 172.16.0.4 connect-interface l0
R4:

[R4]bgp 64512

[R4-bgp]confederation id 2

[R4-bgp]confederation peer-as 64513

[R4-bgp]peer 172.16.0.3 as 64512

[R4-bgp]peer 172.16.0.3 connect-interface l0
R5:

[R5]bgp 64513

[R5-bgp]confederation id 2

[R5-bgp]confederation peer-as 64512

[R5-bgp]peer 172.16.1.21 as 64512

[R5-bgp]peer 172.16.1.21 next-hop-local

[R5-bgp]peer 172.16.0.6 as 64513

[R5-bgp]peer 172.16.0.6 connect-interface l0

[R5-bgp]peer 172.16.0.6 next-hop-local
R6:

[R6]bgp 64513

[R6-bgp]peer 172.16.0.5 as 64513

[R6-bgp]peer 172.16.0.5 connect-interface l0

[R6-bgp]peer 172.16.0.5 next-hop-local

[R6-bgp]peer 172.16.0.7 as 64513

[R6-bgp]peer 172.16.0.7 connect-interface l0

[R6-bgp]peer 172.16.0.7 next-hop-local
R7:

[R7]bgp 64513

[R7-bgp]confederation id 2

[R7-bgp]confederation peer-as 64512

[R7-bgp]peer 172.16.0.6 as 64513

[R7-bgp]peer 172.16.0.6 connect-interface l0

[R7-bgp]peer 172.16.0.6 next-hop-local

[R7-bgp]peer 34.1.1.8 as 3
R8:

[R8]bgp 3

[R8-bgp]peer 34.1.1.7 as 2

至此BGP一些简单配置已经完成,查看一下BGP建邻情况,将R1的建邻环回使用BGP进行宣告:

[R1]bgp 1

[R1-bgp]net 172.16.0.1 32

R1:

[R1]dis bgp peer

[R1-bgp]dis bgp routing-table

R2:

[R2]dis bgp peer

[R2]dis bgp routing-table

R3:

[R3]dis bgp peer

[R3]dis bgp routing-table

R4:

[R4]dis bgp peer

[R4]dis bgp routing-table  【没有学习到相关BGP路由信息】

R5:

[R5]dis bgp peer

[R5]dis bgp routing-table  

R6:

[R6]dis bgp peer

[R6]dis bgp routing-table

R7:

[R7]dis bgp peer

[R7]dis bgp routing-table      【没有学习到相关BGP路由信息】

R8:

[R8]dis bgp peer

[R8]dis bgp routing-table      【没有学习到相关BGP路由信息】

我们可以看到R4、R7和R8没有学习到R1宣告的网段的路由信息,这是由于IBGP的水平分割机制导致的,接下来我们配置BGP路由反射器来解决IBGP的水平分割机制的影响:

这里选择R3和R6配置为RR(路由反射器)

R3:

[R3]bgp 64512

[R3-bgp]peer 172.16.0.2 reflect-client

[R3-bgp]peer 172.16.0.4 reflect-client
R6:

[R6]bgp 64513

[R6-bgp]peer 172.16.0.5 reflect-client

[R6-bgp]peer 172.16.0.7 reflect-client

重新测试一下R4、R7和R8是否:

R4:

[R4]dis bgp routing-table

R7:

[R7]dis bgp routing-table

R8:

[R8]dis bgp routing-table

测试成功!!!

重新将R1和R8的建邻环回进行BGP宣告:

R1:

[R1]bgp 1

[R1-bgp]net 172.16.0.1 32
R8:

[R8]bgp 3

[R8-bgp]net 172.16.0.8 32

在R2和R7上配置空接口,宣告路由汇总后的网段:

R2:

[R2]ip route-static 172.16.0.0 16 NULL 0

[R2]bgp 64512

[R2-bgp]net 172.16.0.0 16
R7:

[R7]ip route-static 172.16.0.0 16 NULL 0

[R7]bgp 64513

[R7-bgp]net 172.16.0.0 16

测试一下是否有BGP路由信息:

举例:

R4:

[R4]dis bgp routing-table

R7:

[R7]dis bgp routing-table

测试一下全网是否全通:

R1建邻环回 ping R8建邻环回:

R1:

[R1]ping -a 172.16.0.1 172.16.0.8

R1建邻环回 ping R4建邻环回:

R1:

[R1]ping -a 172.16.0.1 172.16.0.4

5、R1和R8配置VPN 隧道

R1:

[R1]int t0/0/0

[R1-Tunnel0/0/0]ip add 10.1.1.1 24

[R1-Tunnel0/0/0]tunnel-protocol gre

[R1-Tunnel0/0/0]source 172.16.0.1

[R1-Tunnel0/0/0]destination 172.16.0.8

[R1]ip route-static 192.168.2.0 24 Tunnel 0/0/0
R8:

[R8]int t0/0/0

[R8-Tunnel0/0/0]ip add 10.1.1.8 24

[R8-Tunnel0/0/0]tunnel-protocol gre

[R8-Tunnel0/0/0]source 172.16.0.8

[R8-Tunnel0/0/0]destination 172.16.0.1

[R8-Tunnel0/0/0]q

[R8]ip route-static 192.168.1.0 24 Tunnel 0/0/0

测试一下R1的业务网段与R8的业务网段是否互通:

[R1]ping -a 192.168.1.1 192.168.2.8

测试通过!!!

至此本实验完成!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言学习(九)多文件编程 存储类型 结构体

目录 一、多文件编程&#xff08;一&#xff09;不写头文件的方方式进行多文件编程 &#xff08;二&#xff09;通过头文件方式进行多文件编程&#xff08;1&#xff09;方法&#xff08;2&#xff09;头文件守卫 &#xff08;三&#xff09; 使用多文件编程实现 - * / 功能 二…

系统设计中的泛化调用

背景 目前在学习一些中间件&#xff0c;里面看到了一个词是叫泛化调用&#xff0c; 其实这个场景在JAVA中比较常见。我们常用的有反射&#xff0c;反射就是我知道类名称、类方法和参数&#xff0c;调用一个Object的类&#xff0c;但是在HTTP或者RPC远程调用过程中&#xff0c;…

服务异步通讯MQ

同步调用存在的问题: 异步调用方案: RabbitMQ安装: 第一种:在线拉取 docker pull rabbitmq:3-management 第二种:将已有的安装包放入再用load加载 我这里放到tmp包里边 然后:cd /tmp docker load -i mq.tar 加载进去 然后运行mq容器 docker run \-e RABBITMQ_DEFAULT_USER…

【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”

看到这句话的时候证明&#xff1a;此刻你我都在努力~ 加油陌生人~ 个人主页&#xff1a; Gu Gu Study ​​ 专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努…

下水道井盖多分类检测定位

下水道井盖识别&#xff0c;多分类&#xff0c;使用yolov5训练&#xff0c;采用一部分开源数据集和自建数据集。python pytorch opencv 深度学习#人工智能#深度学习#目标检测

在STM32中用寄存器方式点亮流水灯

文章目录 实验资料一、对寄存器的理解1.通俗认识寄存器2.深入了解寄存器&#xff08;1&#xff09;端口配置低寄存器&#xff08;配置0到7引脚的寄存器&#xff09;&#xff08;2&#xff09;端口配置高寄存器&#xff08;配置8到15引脚&#xff09; 3.GPIO口的功能描述 二、配…

Git Bash和Git GUI设置中文的方法

0 前言 Git是一个分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。一般默认语言为英文&#xff0c;本文介绍修改Git Bash和Git GUI语言为中文的方法。 1 Git Bash设置中文方法 &#xff08;1&#xff09;鼠标右键&#xff0c;单击“Git B…

时间复杂度的简单讲解

小伙伴们大家好&#xff0c;我们又见面了&#xff0c;这次我们直接进入正题 时间复杂度的概念 时间复杂度的定义&#xff1a;在计算机科学中&#xff0c; 算法的时间复杂度是一个函数 &#xff0c;它定量描述了该算法的运行时间。一 个算法执行所耗费的时间&#xff0c;从理论…

公有云Linux模拟TCP三次挥手与四次握手(Wireshark抓包验证版)

目录 写在前面环境准备实验步骤1. 安装nc工具2. 使用nc打开一个连接2.1 公有云-安全组放行对应端口&#xff08;可选&#xff09; 3. 打开Wireshark抓包工具4. 新开终端&#xff0c;进行连接5. 查看抓包文件&#xff0c;验证TCP三次握手与四次挥手TCP三次握手数据传输TCP四次挥…

【C++杂货铺铺】AVL树

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 概念 &#x1f4c1; 节点的定义 &#x1f4c1; 插入 &#x1f4c1; 旋转 1 . 新节点插入较高左子树的左侧---左左&#xff1a;右单旋 2. 新节点插入较高右子树的右侧---右右&#xff1a;左单旋 3. 新节点插入较高左…

57 读取/写出/读取 文件的过程的调试

前言 问题来自于文章 请教文件读写问题 请教文件读写问题 - 内核源码-Chinaunix vim 编辑文件, 实际上删除了原有的文件建立了一个新的文件? Ls –ail . 查看 inode 编号不一样了 这里主要是 调试一下 这一系列流程 测试用例 就是一个程序, 读取 1.txt 两次, 两次之间间隔…

49. UE5 RPG 使用Execution Calculations处理对目标造成的最终伤害

Execution Calculations是Unreal Engine中Gameplay Effects系统的一部分&#xff0c;用于在Gameplay Effect执行期间进行自定义的计算和逻辑操作。它允许开发者根据特定的游戏需求&#xff0c;灵活地处理和修改游戏中的属性&#xff08;Attributes&#xff09;。 功能强大且灵…

国内智能搜索工具实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

C++新特性-线程

主要内容 thread、condition、mutexatomicfunction、bind使用新特性实现线程池&#xff08;支持可变参数列表&#xff09;异常协程其他 1 C11多线程thread 重点&#xff1a; join和detach的使用场景thread构造函数参数绑定c函数绑定类函数线程封装基础类互斥锁mutexconditi…

网络基础-Telnet协议

Telnet&#xff08;Telecommunication Network&#xff09;是一种基于文本的远程终端协议&#xff0c;允许用户通过网络连接到远程计算机&#xff0c;并在远程计算机上执行命令&#xff1b;它使用TCP作为传输层协议&#xff0c;并依赖于网络连接在客户端和服务器之间进行通信&a…

FPGA SDRAM读写控制器

感谢邓堪文大佬 &#xff01; SDRAM 同步动态随机存取内存&#xff08;synchronousdynamic randon-access menory&#xff0c;简称SDRAM&#xff09;是有一个同步接口的动态随机存取内存&#xff08;DRAM&#xff09;。通常DRAM是有一个异步接口的&#xff0c;这样它可以随时响…

计算机毕业设计 | vue+springboot调查问卷管理系统(附源码)

1&#xff0c;研究目的 在进入21世纪以后&#xff0c;互联网得到了蓬勃的发展&#xff0c;电子问卷调查也开始逐渐流行起来。传统纸质问卷和电子问卷相比较后&#xff0c;传统问卷还存在很多弊端&#xff1a; 问卷分发起来比较困难&#xff0c;并且分发试卷耗费大量的金钱和时…

基于STC12C5A60S2系列1T 8051单片机实现一主单片机给多个从单片机发送数据的串口通信功能

基于STC12C5A60S2系列1T 8051单片机实现一主单片机给多个从单片机发送数据的串口通信功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能寄…

基于深度学习神经网络的AI图像PSD去雾系统源码

第一步&#xff1a;PSD介绍 以往的研究主要集中在具有合成模糊图像的训练模型上&#xff0c;当模型用于真实世界的模糊图像时&#xff0c;会导致性能下降。 为了解决上述问题&#xff0c;提高去雾的泛化性能&#xff0c;作者提出了一种Principled Synthetic-to-real Dehazing (…

STC8增强型单片机开发【LED呼吸灯(PWM)⭐⭐】

目录 一、引言 二、硬件准备 三、PWM技术概述 四、电路设计 五、代码编写 EAXSFR&#xff1a; 六、编译与下载 七、测试与调试 八、总结 一、引言 在嵌入式系统开发中&#xff0c;LED呼吸灯是一种常见的示例项目&#xff0c;它不仅能够展示PWM&#xff08;脉冲宽度调制…