STM32多功能交通灯系统:从原理到实现

一、功能说明

本交通灯系统采用先进的stm32f103c8t6微处理器为核心控制单元。系统设置东南西北四个方向各配置两位数码管,用以精准展示5至99秒的时间范围,并且允许用户根据实际需求进行灵活调整。

在信号灯配置方面,每个方向均配备左转、直行、黄灯和红灯共计四个灯,以确保交通信号的有效传递。同时,南北方向和东西方向均安装红外对管装置,分别用于实时监测车流量,为交通管理提供重要数据支持。

此外,本系统还设置紧急按钮功能。一旦触发紧急按钮,系统将立即响应,将行车方向的所有信号灯切换为红灯状态,同时人行道方向信号灯全部转为绿灯状态,以确保紧急情况下的交通安全。紧急模式可通过再次按下紧急按钮解除。

在时间调整方面,本系统具备智能化管理能力,能够根据实时监测到的车流量数据,进行动态调整,以实现交通流的高效管理和优化。

综上所述,本交通灯系统通过严谨、稳重的设计,以及理性的管理策略,为提升道路交通安全性与通行效率提供了有力保障。

二、硬件设计

2.1 原理框图

2.2 各功能框图说明

2.2.1 MCU最小系统

1、该MCU采用了ST的STM32F103C8T6 LQFP48封装,以下是其主要特点:

核心:采用ARM® Cortex®-M3 32位RISC核心,最高频率可达72MHz。

存储器:提供64K字节的Flash存储器和20K字节的SRAM。

电源管理:支持2.0至3.6V的应用供电和I/Os,具有POR、PDR和可编程电压检测器(PVD)。

低功耗模式:包括睡眠、停止和待机模式,适合设计低功耗应用。

丰富的外设:提供两个12位ADC,三个通用16位定时器加一个PWM定时器,以及标准和高级通信接口:最多两个I2C和SPIs,三个USARTs,一个USB和一个CAN。

2、在单片机每个电源输入部分增加一个100nF的旁路电容,其主要功能包括:

a) 滤除电源上的高频噪声。

b) 储能,当负载需要瞬时电流时,电容率先为其提供电流,减小电源产生的波动。

c) 给高频信号提供最近的低阻抗回流路径,减少对其他芯片电源的干扰。

3、BOOT0和BOOT1的作用:

这两个引脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序。

用户可以通过设置BOOT1和BOOT0引脚的状态来选择在复位后的启动模式。

三种启动模式:

Flash memory启动方式(BOOT0 = 0):默认情况下,芯片从内置Flash启动。这是最常用的模式,我们通常使用JTAG或SWD模式下载程序到Flash中,重启后直接从Flash启动。

System memory启动方式(BOOT0 = 1,BOOT1 = 0):从系统存储器启动,这种模式的功能由厂家设置。系统存储器是芯片内部的特定区域,出厂时预置了一个BootLoader,用于串口下载程序到Flash中。这种模式用得较少。

SRAM启动方式(BOOT0 = 1,BOOT1 = 1):从内置SRAM启动,用于程序调试。在这种模式下,代码存储在SRAM中,适用于快速的程序调试。

4、晶振电路

晶体采用8MHz,并联22pf电容,电容与晶振一起形成一个振荡回路,其值需要与晶振的指定负载电容相匹配,以确保晶振在正确的频率下稳定工作。

1M电阻的作用

提供启动振荡:1MΩ电阻有助于晶体振荡器在上电时能够迅速启动振荡。它通过提供一个初始的反馈路径来实现这一点,尤其是在环境温度较低时,晶体振荡器可能更难启动。

增加负性阻抗:并联的1MΩ电阻可以增加电路中的负性阻抗(-R),这有助于提高电路的增益。在没有足够增益的条件下,晶体振荡器可能不会启动。

抑制噪声:这个电阻还可以起到抑制共模噪声的作用,提高系统的抗干扰能力。它有助于减少由于电源线或其他干扰源引入的噪声,从而使晶体振荡器的输出更加稳定。

减少谐波振荡:1MΩ电阻有助于消除晶体振荡器件的谐波振荡,使晶体的输出信号更加纯净和稳定。

5、复位电路

当系统上电时,电容会从0V开始充电,这会导致复位引脚短暂地处于低电平状态,从而触发复位。电容充电后,复位引脚电平逐渐上升到高电平,结束复位过程,允许微控制器开始正常工作。

2.2.2 电源电路 

 电源电路采用LDO AMS1117-3.3将+5V直流电转+3.3V直流电。该LDO具有低纹波噪声功能,确保系统的稳定性和可靠性。电路图描述如下:

USB1 - USB +5V供电接口

SW1 - 电源开关

D1 - 通过利用该器件的非线性特性,将过电压钳制到一个较低的电压值,实现对后级电路的保护。

U1 - LDO,将+5V转为+3.3V

C1/C2/C3/C4 - 主要用于滤除由电源输出的直流电压中所含的杂波和噪声,并将其平滑处理为一个稳定的直流电压输出

R1 - 限流电阻

LED1 - 电源指示灯

2.2.3 按键电路

按键电路采用点触按键,当用户按下按键时,电路会检测到按键的接触,并产生低电平信号,从而触发相应的操作。电路图描述如下:

SW2/SW3/SW4/SW5 - 点触按键,点触按键的工作原理:按钮与触点机械作用,按下按钮,弹簧收缩,触点接触导电条,电路接通;松开按钮,弹簧恢复原状,触点离开导电条,电路断开。 

2.2.4 红外对管检测电路 

红外发射二极管(LED)不断发射红外光束,红外检测二极管(PD)接收来自LED的红外光束,当LED发出的红外光束命中目标物体时,部分红外光束会被物体反射回给PD。不同的反射强度输出的电压大小不同。

LM339 是一个内部集成了四路比较器的集成电路。比较器有两个输入端和一个输出端。其中,一个输入端称为同输入端(用“+”号表示),另一个称为反相输入端(用“-”表示)。当“+”端电压高于“-”端电压时,输出正电源电压;反之,输出负电源电压。

单片机通过监测OUT1和OUT2输出的电平信号,以精确判断是否有车辆通行。在车辆经过时,红外光线被有效反射,导致OUT输出低电平状态。此外,红外检测的灵敏度可经由调整R29和R30之间的分压比例来进行精确控制。

2.2.5 交通灯电路 

 交通灯电路采用普通的5mm发光二极管加上限流电阻组成。

2.2.6 OLED显示电路

采用0.96寸OLED显示屏以展示交通灯车流量信息,同时,在设置交通灯时间的过程中,也运用OLED实现人机交互功能。

2.2.7 数码管显示电路

数码管的驱动方式采用了GN1640T驱动芯片,而东南西北四个方向则均选用了0.36英寸共阴双八红色数码管,以实现倒计时时间的精准显示。

 三、软件设计

在主函数中,首先进行外设的初始化操作。随后,在while循环中,app_handle()函数负责处理交通灯和车流量的相关工作。同时,key_handle()函数则专注于处理与按键相关的操作。另外,oled_handle()函数则负责处理人机界面的交互功能。

 3.1 app_handle()

app_handle()函数进行交通灯信号的处理和数码管的显示,交通信号灯一个循环结束后会进行车流量的比较计算,然后重新更新东西和南北的交通灯通行时间。

traffic_light_handle()主要对交通灯的状态进行处理。

void traffic_light_handle(void)
{
	switch(step)
	{
		case 0: //东西直行
			EW_STRAIGHT_RED_LED      	= LOW;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= HIGH;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= LOW;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= LOW;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= LOW;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= HIGH;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= HIGH;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= LOW;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= LOW;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= LOW;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= HIGH;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= LOW;	//南北人行道红灯
		break;
		case 1://东西黄灯 
			EW_STRAIGHT_RED_LED      	= LOW;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= LOW;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= HIGH;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= LOW;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= LOW;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= HIGH;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= HIGH;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= LOW;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= LOW;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= LOW;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= HIGH;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= LOW;	//南北人行道红灯	
		break;
		case 2://东西左转 
			EW_STRAIGHT_RED_LED      	= LOW;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= LOW;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= LOW;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= HIGH;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= LOW;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= HIGH;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= HIGH;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= LOW;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= LOW;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= LOW;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= HIGH;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= LOW;	//南北人行道红灯	
		break;
		case 3://南北直行
			EW_STRAIGHT_RED_LED      	= HIGH;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= LOW;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= LOW;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= LOW;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= HIGH;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= LOW;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= LOW;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= HIGH;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= LOW;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= LOW;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= LOW;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= HIGH;	//南北人行道红灯
		break;
		case 4://南北黄灯
			EW_STRAIGHT_RED_LED      	= HIGH;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= LOW;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= LOW;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= LOW;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= HIGH;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= LOW;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= LOW;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= LOW;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= HIGH;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= LOW;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= LOW;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= HIGH;	//南北人行道红灯
		break;
		case 5://南北左转
			EW_STRAIGHT_RED_LED      	= HIGH;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= LOW;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= LOW;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= LOW;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= HIGH;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= LOW;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= LOW;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= LOW;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= LOW;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= HIGH;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= LOW;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= HIGH;	//南北人行道红灯
		break;
		default: break;
	}			
}

3.2 key_handle() 

key_handle() 主要对交通灯通行时间进行调整。

void key_handle(void)
{
	if(flag_get(&key_flag,KEY4_PRESS_FLAG))
	{
		flag_clr(&key_flag,KEY4_PRESS_FLAG);
		set_num++;
		if(set_num > 2) set_num = 1;
		TIM_Cmd(TIM3, DISABLE);  //失能TIM3
		if(set_num == 1)
		{
			inverse_oled_show_string(0,0,"SET EW:",8);
			oled_show_num(80,0,ew_time,2,8);
		}
		else
		{
			oled_show_string(0,0,"SET EW:",8);
			oled_show_num(80,0,ew_time,2,8);
		}
		
		if(set_num == 2)
		{
			inverse_oled_show_string(1,2,"SET NS:",8);
			oled_show_num(80,2,ns_time,2,8);
		}
		else
		{
			oled_show_string(1,2,"SET NS:",8);
			oled_show_num(80,2,ns_time,2,8);
		}		
	}	
	else if(flag_get(&key_flag,KEY5_PRESS_FLAG))
	{
		flag_clr(&key_flag,KEY5_PRESS_FLAG);
		if(set_num == 1) 
		{
			if(ew_time < MAX_TIME) ew_time++;
		}
		else if(set_num == 2) 
		{
			if(ns_time < MAX_TIME) ns_time++;
		}
		oled_show_num(80,0,ew_time,2,8);
		oled_show_num(80,2,ns_time,2,8);
	}		
	else if(flag_get(&key_flag,KEY3_PRESS_FLAG))
	{
		flag_clr(&key_flag,KEY3_PRESS_FLAG);
		if(set_num == 1) 
		{
			if(ew_time > MIN_TIME) ew_time--;
		}
		else if(set_num == 2) 
		{
			if(ns_time > MIN_TIME) ns_time--;
		}
		oled_show_num(80,0,ew_time,2,8);
		oled_show_num(80,2,ns_time,2,8);
	}		
	else if(flag_get(&key_flag,KEY2_PRESS_FLAG))
	{
		flag_clr(&key_flag,KEY2_PRESS_FLAG);
		set_num = 0;
		step = 0;
		current_ew_time = ew_time;
		current_ns_time = ew_time + STRAIGHT_YELLOW_TIME_NUM + LEFT_GREEN_TIME_NUM;;
		oled_clear();
		TIM_Cmd(TIM3, ENABLE);  //使能TIM3
	}	
	
	
	if(flag_get(&key_flag,KEY1_PRESS_FLAG))
	{
		flag_clr(&key_flag,KEY1_PRESS_FLAG);
		
		if(stop_flag)
		{
			stop_flag = 0;
			TIM_Cmd(TIM3, ENABLE);  //失能TIM3
		}
		else
		{
			stop_flag = 1;
			EW_STRAIGHT_RED_LED      	= HIGH;	//东西直行红灯
			EW_STRAIGHT_GREEN_LED   	= LOW;	//东西直行绿灯
			EW_STRAIGHT_YELLOW_LED   	= LOW;	//东西直行黄灯
			EW_LEFT_GREEN_LED			= LOW;	//东西左转绿灯
			EW_SIDEWALK_GREEN_LED      	= LOW;	//东西人行道绿灯
			EW_SIDEWALK_RED_LED      	= HIGH;	//东西人行道红灯
		
			NS_STRAIGHT_RED_LED      	= HIGH;	//南北直行红灯
			NS_STRAIGHT_GREEN_LED   	= LOW;	//南北直行绿灯
			NS_STRAIGHT_YELLOW_LED   	= LOW;	//南北直行黄灯
			NS_LEFT_GREEN_LED			= LOW;	//南北左转绿灯
			NS_SIDEWALK_GREEN_LED      	= LOW;	//南北人行道绿灯
			NS_SIDEWALK_RED_LED      	= HIGH;	//南北人行道红灯
			TIM_Cmd(TIM3, DISABLE);  //失能TIM3
		}
	}	
}

 3.3 oled_handle() 

OLED主要显示车流量信息和设置交通灯通行时间时进行人机信息交互。

四、实物演示

交通灯通行时间演示

交通灯通行时间演示

车流量检测演示

车流量检测演示

倒计时时间设置演示

倒计时时间设置演示

五、技术交流

如果您有更好的建议或者在阅读过程中遇到任何问题或疑虑,欢迎加我QQ ,一起探讨技术问题,我的QQ号是986571840,加的时候请注明CSDN。

感谢各位用户点赞、分享、在看,这些行为让知识得以更加广泛地传播,从而让更多人受益。

请在转载作品时注明出处,严禁抄袭行为。

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

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

相关文章

【深度学习驱动流体力学】OpenFOAM目录流体力学求解器汇总介绍

下面这些目录结构和其中的求解器和工具展示了OpenFOAM作为一个功能强大且广泛应用的开源CFD软件框架的多样性和灵活性。每个求解器都专门用于解决不同类型的流体动力学问题,从基础的流动模拟到复杂的多相流动和燃烧模拟等各种应用场景。 tree -L 2 . ├── Allclean ├──…

再谈量化策略失效的问题

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

测速小车模块

1.用途&#xff1a;广泛用于电机转速检测&#xff0c;脉冲计数,位置限位等。 2.有遮挡&#xff0c;输出高电平&#xff1b;无遮挡&#xff0c;输出低电平 接线 VCC 接电源正极3.3-5V GND 接电源负极 DO TTL开关信号输出 AO 此模块不起作用 测试原理和单位换算&#xff1a;…

商城小程序:颠覆传统电商,打造全新商业生态

在数字化浪潮的推动下&#xff0c;网购行业呈现多元化繁荣发展态势&#xff0c;出现了琳琅满目的商品应用小程序&#xff0c;但市面上的商城小程序基本属于通用型&#xff0c;无论是商城界面展示和基本功能&#xff0c;都不能满足个性化和商品推广需求&#xff0c;阻碍了商品的…

无线传感器网络技术原理及应用

第一章 简述无线传感器网络的概念及与传统无线网络的区别。 无线传感器网络的概念&#xff1a;无线传感器网络是由部署在监测区域内大量的廉价微型传感器节点组成&#xff0c;通过无线通信方式形成的一个多跳的自组织网络系统&#xff0c;其目的是协作地感知、采集和处理网络…

易舟云财务软件:开启云记账新时代

在数字化浪潮的推动下&#xff0c;财务管理正经历着深刻的变革。易舟云财务软件&#xff0c;作为一款引领时代的云记账平台&#xff0c;以其卓越的功能和便捷的操作&#xff0c;为企业带来了全新的财务管理体验。 云记账&#xff0c;财务管理的未来趋势 云记账&#xff0c;即基…

[SCAU 课程设计参考] 活动管理程序

(仅供参考!!!!!!) 废话不多说&#xff0c;直接上代码&#xff01;(但是量有点多&#xff0c;放前面影响观感&#xff0c;所以还是先不放了&#xff0c;文章末尾有链接) 题目的要求: 提要:我的设计只是一个参考&#xff0c;当时还是大一的时候写的&#xff0c;代码比较青涩&a…

ARM功耗管理框架之LPI

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理框架&#xff1f;SCP&#xff1f;PPU&#xff1f;LPI&#xff1f;之间的关系&#xff1f;如何配合&#xff1f; 目录 一、功耗管理框架中的LPI 二、LPI分类 三、Q-Channel和P-Channel对比 四、Q-Channel和P-Ch…

2024年6月19日 (周三) 叶子游戏新闻

超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 人气漫改《忍者杀手》动作游戏7月24日登陆Switch角川游戏日前宣布&#xff0c;旗下人气漫改动作游戏《忍者杀手&#xff1a;火烧新琦玉》将于7月24日登陆Switch&#xff0c;本作已经上架Steam&#xff0c;感兴趣…

Servlet实践操作

Servlet运行原理 Tomcat 的代码内置了 main 方法&#xff0c;当我们启动 Tomcat 的时候&#xff0c;就是从 Tomcat 的 main 方法开始执行的 被 WebServlet 注解修饰的类会在 Tomcat 启动的时候就被获取并集中管理 Tomcat 通过反射这样的语法机制来创建被 WebServlet 注解修饰…

【机器学习300问】114、什么是度量学习?三元组损失又是什么?

这些天都在加强自己的CV基本功&#xff0c;之前做过的人脸识别项目里有很多思考&#xff0c;在学习了这些基础知识后&#xff0c;我再次回顾了之前的人脸识别项目。我发现&#xff0c;很多之前困惑不解的问题现在都有了清晰的答案。 一、什么是度量学习&#xff1f; 度量学习也…

Day 27:2596. 检查骑士巡视方案

Leetcode 2596. 检查骑士巡视方案 骑士在一张 n x n 的棋盘上巡视。在 **有效 **的巡视方案中&#xff0c;骑士会从棋盘的 左上角 出发&#xff0c;并且访问棋盘上的每个格子 恰好一次 。 给你一个 n x n 的整数矩阵 grid &#xff0c;由范围 [0, n * n - 1] 内的不同整数组成&…

小米SU7遇冷,下一代全新车型被官方意外曝光

不知道大伙儿有没有发现&#xff0c;最近小米 SU7 热度好像突然之间就淡了不少&#xff1f; 作为小米首款车型&#xff0c;SU7 自上市以来一直承载着新能源轿车领域流量标杆这样一个存在。 发售 24 小时订单量破 8 万&#xff0c;2 个月后累计交付破 2 万台。 看得出来限制它…

Blender渲染模糊?掌握这些技巧,提升你的渲染质量!

随着Blender生态链越来越完善,越来越多的人开始学习Blender。然而&#xff0c;在使用Blender的过程中&#xff0c;许多小伙伴遇到了各种问题。比如&#xff1a; 为什么blender渲染物品很糊?能让它们变得清晰吗&#xff1f; Blender渲染不出来&#xff0c;有时渲染出来了就闪…

基本循环神经网络(RNN)

RNN背景&#xff1a;RNN与FNN 在前馈神经网络中&#xff0c;信息的传递是单向的&#xff0c;这种限制虽然使得网络变得更容易学习&#xff0c;但在一定程度上也减弱了神经网络模型的能力。 在生物神经网络中&#xff0c;神经元之间的连接关系要复杂的多。前馈神经网络可以看着…

使用fetch加载阿里云的在线json 出现403错误

在做地图项目的时候&#xff0c;引用了阿里云的在线JSON地图数据。 问题描述&#xff1a; 但是本地开发使用fetch请求json地址的时候接口却出现了403错误&#xff0c;把地址直接复制到浏览器上却能正常打开。 https://geo.datav.aliyun.com/areas_v3/bound/330000_full.json …

[学习笔记]-MyBatis-Plus简介

简介 Mybatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 简言之就是对单表的增删改查有了很好的封装。基本不用再单独写sql语句了。目前此类…

【华为HCIA数通网络工程师真题-数据通信与网络基础】

文章目录 选择题判断题 选择题 1、在 VRP 平台上&#xff0c;可以通过下面哪种方式访向上条历史命令&#xff1f; 上光标 &#xff08;ctrlU 为自定义快捷键&#xff0c;ctrlP 为显示历史缓存区的前一条命令&#xff0c;左光标为移动光标&#xff09; 2、主机 A &#xff08;1…

UI设计速成课:理解模态窗口与非模态窗口的区别

我们日常所说的弹性框架是非常笼统的概念。我们习惯性地称之为对话框架、浮动层和提示条。弹性框架可以分为两种:模态弹性框架和非模态弹性框架。产品需要弹性框架来传递信息&#xff0c;用户需要弹性框架来接受反馈&#xff0c;但是没有经过推敲的弹出窗口设计很容易让用户感到…

mamba模型原理解读

本文主要讲解我对于2023年提出的mamba模型的理解和解读&#xff0c;mamba模型的提出为transformer模型存在的计算效率低下&#xff0c;需要大量时间运行程序提出了解决方案。提高了模型的运行效率和计算效率。我主要是根据下面这篇文章入手&#xff1a; 1.mamba模型是通过堆叠多…