STM32F103C8T6第三天:pwm、sg90、超声波、距离感应按键开盖震动开盖蜂鸣器

1. 定时器介绍1(317.21)

  • 软件定时(之前的定时方法)(软件延时)
  • 缺点:不精确、占用CPU资源
void Delay500ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}

定时器工作原理:

  • 使用精准的时基,通过硬件的方式,实现定时功能。定时器核心就是计数器。
    在这里插入图片描述

定时器分类:

  • 基本定时器(TIM6 ~ TIM7)
  • 通用定时器(TIM2 ~ TIM5)
  • 高级定时器(TIM1 和 TIM8)
    在这里插入图片描述

STM32F103C8T6定时器资源:

在这里插入图片描述

通用定时器介绍:

1) 16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。
2) 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 165535 之间的任意数
值。
34 个独立通道(TIMx_CH1~4),这些通道可以用来作为:A.输入捕获B.输出比较C.PWM 生成(边缘或中间对齐模式)D.单脉冲模式输出
4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电
路。
定时器计数模式:
定时器时钟源:
5)如下事件发生时产生中断/DMA:A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)C.输入捕获D.输出比较E.支持针对定位的增量(正交)编码器和霍尔传感器电路F.触发输入作为外部时钟或者按周期的

2. 定时器介绍1(318.22)

定时器计数模式:

在这里插入图片描述
在这里插入图片描述

定时器时钟源:

在这里插入图片描述

定时器溢出时间计算公式:(加一是因为计算机是从0开始计数的)

在这里插入图片描述

  • 例如,要定时500ms(0.5s),则:PSC=7199,ARR=4999,Tclk=72M(72000000Hz)

3. 使用定时器中断点亮LED灯(319.23)

  • 需求:使用定时器中断方法,每500ms翻转一次LED1灯状态。
  1. RCC配置
  2. LED1灯配置
  3. 时钟数配置
  4. TIM2配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 工程配置
  6. 重写更新中断回调函数
  • 代码(6.timer_test/MDK-ARM)
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{//重写更新中断回调函数if(htim->Instance == TIM2)HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);//每过500ms翻转led1的状态
}
  1. 启动定时器
  • 在main.c中,在定时器初始化命令之后加入以下代码:
    HAL_TIM_Base_Start_IT(&htim2);

4. PWM概述(320.24)

STM32F103C8T6 PWM 资源:

  • 高级定时器(TIM1):7路
  • 通用定时器(TIM2~TIM4):各4路
    在这里插入图片描述
    在这里插入图片描述

PWM 输出模式:

  • PWM 模式1:在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平; 在向下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。
  • PWM 模式2:在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平; 在向下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。
    在这里插入图片描述

PWM 周期与频率:

在这里插入图片描述

PWM 占空比:

  • 由 TIMx_CCRx 寄存器决定。

5. PWM实现呼吸灯效果(321.25)

  • 需求:使用PWM点亮LED1实现呼吸灯效果。

LED灯为什么可以越来越亮,越来越暗?

  • 这是由不同的占空比决定的。

如何计算周期/频率?

  • 假如频率为 2kHz ,则:PSC=71,ARR=499

LED1连接到哪个定时器的哪一路?

  • 学会看产品手册:
    在这里插入图片描述

开始实战!

  1. 设置时钟
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 设置定时器
  • 把极性设置为 Low,因为 LED 灯是低电平亮
    在这里插入图片描述
  1. 配置工程
    在这里插入图片描述
    在这里插入图片描述
  2. 业务代码
  • 代码(7.pwm_test/MDK-ARM)
//main函数
// 定义变量
uint16_t pwmVal=0;  //调整PWM占空比 
uint8_t dir=1;    //设置改变方向。1:占空比越来越大;0:占空比越来越小HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM4_Init();// 使能 Timer4 第3通道 PWM 输出
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);//打开pwm
// while循环实现呼吸灯效果
while (1)
{HAL_Delay(1);//如果没有 可能会不亮if (dir)pwmVal++;//1:越来越亮elsepwmVal--;//0:越来越暗//pwmVal 达到 PWM 周期时,就会反向改变方向if(pwmVal >= htim4.Init.Period)//越来越亮到顶端后dir = 0;//变为越来越暗else if (pwmVal <= 0)//越来越暗到底端后dir = 1;//变为越来越亮//修改比较值(CCRx)即修改占空比__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal); 
}

6. 感应开关盖垃圾桶项目概述(322.26)

项目需求

  • 检测靠近时,垃圾桶自动开盖并伴随滴一声,2 秒后关盖
  • 发生震动时,垃圾桶自动开盖并伴随滴一声,2 秒后关盖
  • 按下按键时,垃圾桶自动开盖并伴随滴一声,2 秒后关盖

项目框图

在这里插入图片描述

硬件清单

  • SG90舵机,超声波模块,震动传感器,蜂鸣器

7. sg90舵机概述(324.28)

sg90舵机介绍

在这里插入图片描述

  • PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s,20ms左右。

确定周期/频率

在这里插入图片描述

  • 如果周期为20ms,则 PSC=7199,ARR=199

角度控制

  • 0.5ms-------------0度;2.5% 对应函数中 CCRx 为 5
  • 1.0ms------------45度;5.0% 对应函数中 CCRx 为 10
  • 1.5ms------------90度;7.5% 对应函数中 CCRx 为 15
  • 2.0ms-----------135度;10.0% 对应函数中 CCRx 为 20
  • 2.5ms-----------180度;12.5% 对应函数中 CCRx 为 25
    在这里插入图片描述

8. sg90舵机编程实战(323.27)

  • 需求: 每隔1s,转动一个角度:0度 --> 45度 --> 90度 --> 135度 --> 180度 --> 0度
  • 接线:
    在这里插入图片描述
  • STM32CubeMx工程配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 代码(8.sg90_test/MDK-ARM)
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);//打开Time4 第3通道的 PWMwhile (1)
{HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 5);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 10);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 15);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 20);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, 25);
}

9. 超声波传感器介绍及实战(325.29)

超声波传感器介绍

在这里插入图片描述

  • 怎么让它发送波

    • Trig ,给Trig端口至少10us的高电平
  • 怎么知道它开始发送了

    • Echo信号,由低电平跳转到高电平,表示开始发送波
  • 怎么知道接收了返回波

    • Echo,由高电平跳转回低电平,表示波回来了
  • 怎么算时间
    Echo引脚维持高电平的时间!

    • 波发出去的那一刻,开始启动定时器;
    • 波返回来的拿一刻,开始停止定时器;

    计算出中间经过多少时间。

  • 怎么算距离

    • 距离 = 速度 (340m/s)* 时间/2
      在这里插入图片描述

编程实战

  • 需求: 使用超声波测距,当手离传感器距离小于5cm时,LED1点亮,否则保持不亮状态。
  • 接线:
    • Trig — PB6
    • Echo — PB7
    • LED1 — PB8
      在这里插入图片描述
  • 定时器配置:
    • 使用 TIM2 ,只用作计数功能,不用作定时。
    • 将 PSC 配置为 71,则计数 1 次代表 1us 。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 编写微秒级函数:
//使用TIM2来做us级延时函数
void TIM2_Delay_us(uint16_t n_us)
{/* 使能定时器2计数 */__HAL_TIM_ENABLE(&htim2);__HAL_TIM_SetCounter(&htim2, 0);while(__HAL_TIM_GetCounter(&htim2) < (1 * n_us));/* 关闭定时器2计数 */__HAL_TIM_DISABLE(&htim2);
}

在这里插入图片描述

  • 主函数:
//1. Trig ,给Trig端口至少10us的高电平
//2. echo由低电平跳转到高电平,表示开始发送波
//波发出去的那一下,开始启动定时器
//3. 由高电平跳转回低电平,表示波回来了
//波回来的那一下,我们开始停止定时器
//4. 计算出中间经过多少时间
//5. 距离 = 速度 (340m/s)* 时间/2(计数1次表示1us)
//每500毫秒测试一次距离
  • 代码(9.sr_04_test/MDK-ARM)
int main()
{int cnt = 0;float distance = 0;HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();while (1){//1. Trig ,给Trig端口至少10us的高电平HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET);//拉高TIM2_Delay_us(20);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);//拉低//2. echo由低电平跳转到高电平,表示开始发送波//波发出去的那一下,开始启动定时器while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)==GPIO_PIN_RESET);HAL_TIM_Base_Start(&htim2);//启动定时器__HAL_TIM_SetCounter(&htim2,0);//从0开始计数//3. 由高电平跳转回低电平,表示波回来了//波回来的那一下,我们开始停止定时器while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)==GPIO_PIN_SET);HAL_TIM_Base_Stop(&htim2);//4. 计算出中间经过多少时间cnt = __HAL_TIM_GetCounter(&htim2);//5. 距离 = 速度 (340m/s)* 时间/2(计数1次表示1us)distance = 340*100*0.000001*cnt/2; //单位:cmif(distance < 5)HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);elseHAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);//每500毫秒测试一次距离HAL_Delay(500);}
}

10. 封装超声波测距代码(326.30)

  • 工程配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 代码(10.rubbish_test/MDK-ARM)
//使用TIM2来做us级延时函数
void TIM2_Delay_us(uint16_t n_us)
{/* 使能定时器2计数 */__HAL_TIM_ENABLE(&htim2);__HAL_TIM_SetCounter(&htim2, 0);while(__HAL_TIM_GetCounter(&htim2) < ((1 * n_us)-1) );/* 关闭定时器2计数 */__HAL_TIM_DISABLE(&htim2);
}
double get_distance()
{int cnt = 0;//1. Trig ,给Trig端口至少10us的高电平HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET);//拉高TIM2_Delay_us(20);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET);//拉低//2. echo由低电平跳转到高电平,表示开始发送波//波发出去的那一下,开始启动定时器while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)==GPIO_PIN_RESET);HAL_TIM_Base_Start(&htim2);//启动定时器__HAL_TIM_SetCounter(&htim2,0);//从0开始计数//3. 由高电平跳转回低电平,表示波回来了//波回来的那一下,我们开始停止定时器while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_7)==GPIO_PIN_SET);HAL_TIM_Base_Stop(&htim2);//4. 计算出中间经过多少时间cnt = __HAL_TIM_GetCounter(&htim2);//5. 距离 = 速度 (340m/s)* 时间/2(计数1次表示1us)return (340*100*0.000001*cnt/2); //单位:cm
}
int main(void)
{float distance = 0;		HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();while (1){distance = get_distance();if(distance < 5)HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);elseHAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);//每500毫秒测试一次距离HAL_Delay(500);}
}

11. 实现距离感应开关盖(327.31)

在这里插入图片描述
在这里插入图片描述

  • 代码(10.rubbish_test/MDK-ARM)
void openStatusLight()
{//点亮LED1HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
}
void closeStatusLight()
{//熄灭LED1HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);HAL_Delay(150);每150毫秒测试一次距离
}void initSG90_0()
{HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4); //启动定时器4__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, 5); //将舵机置为0度
}void openDusbin()
{__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, 15); //将舵机置为90度HAL_Delay(100);
}
void closeDusbin()
{__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, 5); //将舵机置为0度HAL_Delay(150);//每150毫秒测一次距离
}

12. 添加按键开盖功能(328.32)

  • STM32CubeMx工程配置
    在这里插入图片描述
  • 代码(10.rubbish_test/MDK-ARM)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin == GPIO_PIN_0){openDusbin();}	
}

13. 添加震动开盖功能(329.33)

  • STM32CubeMx工程配置
    在这里插入图片描述
    在这里插入图片描述
  • 代码(10.rubbish_test/MDK-ARM)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if(GPIO_Pin == GPIO_PIN_0 || GPIO_Pin == GPIO_PIN_5){if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET ||   //按键HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5) == GPIO_PIN_RESET)	// 震动传感器{openStatusLight();//开灯openDusbin();//开盖}}
}

14. 添加蜂鸣器(330.34)

  • STM32CubeMx工程配置
    在这里插入图片描述
  • 代码(10.rubbish_test/MDK-ARM)
void openDusbin()
{__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, 15); //将舵机置为90度HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);HAL_Delay(100);//蜂鸣器响100msHAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);HAL_Delay(2000);//开盖两秒
}

15. 解决垃圾筒抽抽Bug(331.35)

  • 代码(10.rubbish_test/MDK-ARM)
void openDusbin()
{if(flag == CLOSE){flag = OPEN;__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, 15); //将舵机置为90度HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);HAL_Delay(100);//蜂鸣器响100msHAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);}HAL_Delay(2000);//开盖两秒
}
void closeDusbin()
{__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_4, 5); //将舵机置为0度flag = CLOSE;HAL_Delay(150);//每150毫秒测一次距离
}

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

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

相关文章

微服务-网关设计

文章目录 引言I 网关部署java启动jar包II 其他服务部署细节2.1 服务端api 版本号III 网关常规设置3.1 外部请求系统服务都需要通过网关访问3.2 第三方平台回调校验文件的配置IV 微服务日志跟踪4.1 打印线程ID4.2 封装线程池任务执行器4.3 将自身MDC中的数据复制给子线程4.4 微服…

龙迅LT8911EXB功能概述 MIPICSI/DSI TO EDP

LT8911EXB 描述&#xff1a; Lontium LT8911EXB是MIPIDSI/CSI到eDP转换器&#xff0c;单端口MIPI接收器有1个时钟通道和4个数据通道&#xff0c;每个数据通道最大运行2.0Gbps&#xff0c;最大输入带宽为8.0Gbps。转换器解码输入MIPI RGB16/18/24/30/36bpp、YUV422 16/20/24bp…

PageHelper多表关联查询数量问题

PageHelper多表关联查询数量问题 通常我们会使用PageHelper进行分页查询&#xff0c;但是当分页查询被用到多个表的关联查询中时&#xff0c;就有可能导致查询出来的数据总数比我们想要的多得多。 首先在数据库中创建三个demo表&#xff1a;role、path、role_path role角色表…

WM 报错不含领货点存储类型的存储类型需要部分搁板管理

试图为SAP新建堆放策略维B标准存储类型系统报错如下&#xff1a; 不含领货点存储类型的存储类型需要部分搁板管理 加个P类型的&#xff0c;先保存&#xff0c;然后再改 解决方案&#xff1a; 进入如下配置路径&#xff0c; 新增一个配置条目&#xff0c;如上图示&#xff0c;…

ci-cd的流程

1、项目在gitlab上&#xff0c;从gitlab上使用git插件获取源码&#xff0c;构建成war包&#xff0c;所以使用tomcat作为运行环境 发布 &#xff1a;使用maven插件发布&#xff0c;使用ssh连接。

小米6安装Ubuntu Touch系统也不是很难嘛

序言 这个文章是用来解说,小米6如何安装Ubuntu Touch系统 正文 安装这个系统需要注意的几点 1.手机必须已经解BL锁 2.没了 安装步骤 先双击打开压缩包查看,按照第一步第二步来进行执行,下面是解压图片 第一步 1.打开第一个文件夹 复制刷入rec的命令.txt里面的内容,然后打开红…

HTTP-HTTPS区别详解

一、HTTP协议 1. GET和POST的请求的区别 Post 和 Get 是 HTTP 请求的两种方法&#xff0c;其区别如下&#xff1a; 应用场景&#xff1a; GET 请求是一个幂等的请求&#xff0c;一般 Get 请求用于对服务器资源不会产生影响的场景&#xff0c;比如说请求一个网页的资源。而 Po…

竞赛选题 深度学习火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 图像识别 火车票识别系统 该项目较为新颖&#xff0c;适…

百度上线“文心一言”付费版本,AI聊天机器人市场竞争加剧

原创 | 文 BFT机器人 百度不愧是我国AI技术领域的先行者&#xff0c;每年致力于人工智能领域取得技术产品的突破和创新。据爆料称&#xff0c;百度的文心一言有突破了新境界&#xff0c;开创了文心大模型4.0会员版本。从线上的to C产品到试水商业化&#xff0c;百度都是争先走…

kubernetes集群编排——k8s认证授权

pod绑定sa [rootk8s2 ~]# kubectl create sa admin [rootk8s2 secret]# vim pod5.yaml apiVersion: v1 kind: Pod metadata:name: mypod spec:serviceAccountName: admincontainers:- name: nginximage: nginxkubectl apply -f pod5.yamlkubectl get pod -o yaml 认证 [rootk8s…

iOS 让界面元素的文字随着语言的更改而变化——本地化文字跟随

在我的 App 内置的设置中&#xff0c;修改了语言&#xff0c;这时需要让当前界面的文本跟着改变语言。 解决方法是&#xff1a;添加一个观察者&#xff0c;观察 localize 本地语言的通知&#xff0c;然后一有变化就调用自定义的方法执行操作。&#xff08;而设置中其实是改变了…

华为交换机忘记console密码怎么办?

console线RJ45头 连接交换机console口&#xff0c;usb接口连接电脑电脑桌面计算机右键-》管理&#xff0c;端口查看端口是com几 3打开secureCRT 点击第二个图标&#xff0c;快速连接&#xff0c;然后设置下参数&#xff0c;如下图 4、重启交换机 5、看到如下图提示信息&#x…

C语言 指针进阶

目录 数组指针 指针数组访问数组元素 再次讨论数组名 数组指针访问一维数组&#xff08;但是这样会很别扭&#xff09; 访问二维数组元素 非数组指针访问 数组指针访问 数组传参Demo 一维数组传参 二维数组传参 指针数组指针 字符指针 函数指针 函数指针调用时可以…

校园安防监控系统升级改造方案:如何实现设备利旧上云与AI视频识别感知?

一、背景与需求分析 随着现代安防监控科技的兴起和在各行各业的广泛应用&#xff0c;监控摄像头成为众所周知的产品&#xff0c;也为人类的工作生活提供了很大的便利。由于科技的发达&#xff0c;监控摄像头的升级换代也日益频繁。每年都有不计其数的摄像头被拆掉闲置&#xf…

2023年云计算的发展趋势如何?

混合云的持续发展&#xff1a;混合云指的是将公有云和私有云进行结合&#xff0c;形成一种统一的云计算环境。随着企业对数据隐私和安全性的要求越来越高&#xff0c;以及在数据存储和处理方面的需求不断增长&#xff0c;混合云正在逐渐成为主流。预计未来混合云将会继续保持高…

搜索引擎Elasticsearch基础与实践

倒排索引 将文档中的内容分词&#xff0c;然后形成词条。记录每条词条与数据的唯一表示如id的对应关系&#xff0c;形成的产物就是倒排索引&#xff0c;如下图&#xff1a; ElasticSearch数据的存储和搜索原理 这里的索引库相当于mysql中的database。一个文档&#xff08;do…

微服务架构——笔记(3)Eureka

微服务架构——笔记&#xff08;3&#xff09; 基于分布式的微服务架构 本次笔记为 此次项目的记录&#xff0c;便于整理思路&#xff0c;仅供参考&#xff0c;笔者也将会让程序更加完善 内容包括&#xff1a;1.支付模块、2.消费者订单模块、支付微服务入驻Eureka、Eureka集群…

计网----数据库(一)

计网----数据库&#xff08;一&#xff09; 一.什么是数据库 数据库是”按照数据结构来组织、存储和管理数据的仓库“。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 二.数据库的特点 1.规范化的本地存储 2.加密 3.共享 三.数据库的好处…

ChatGPT如何管理对话历史?

问题 由于现在开始大量使用ChatGPT对话功能&#xff0c;认识到他在提供启发方面具有一定价值。比如昨天我问他关于一个微习惯的想法&#xff0c;回答的内容还是很实在&#xff0c;而且能够通过他的表达理解自己的问题涉及到的领域是什么。 此外&#xff0c;ChatGPT能够总结对话…

华为eNSP实验-三层交换机的不同网段通信(通过OSPF路由方式)

1.拓扑图 2.过程如下 2.1 首先PC1和PC2配置好IP地址 2.2 在SW1上配置虚拟网关及VLAN <Huawei>system-view [Huawei]sysname SW1 [SW1]undo info-center enable [SW1] [SW1]vlan batch 10 20 [SW1]interface GigabitEthernet 0/0/1 [SW1-GigabitEthernet0/0/1]port li…