STM32(7):中断方式让按键点亮LED
概述
上一节“STM32(5):轮训方式让按键点亮LED”实现了基于轮训的方式,实现点亮LED灯,本节将基于另外一种通信方式:中断方式,来实现点亮LED。
代码概览
void delay(unsigned int time)
{unsigned int i = 0;while (time--){i = 1000000;while (i--);}
}u8 key_read()
{u8 result = 0;// delay(1);// 注意这里是读取InputDataBitresult = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12);return result;
}void led_init()
{GPIO_InitTypeDef led;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);led.GPIO_Pin = GPIO_Pin_13;led.GPIO_Mode = GPIO_Mode_Out_PP;led.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &led);GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET);
}void key_init()
{GPIO_InitTypeDef key;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);key.GPIO_Pin = GPIO_Pin_12;key.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOB, &key);
}void led_opr(int opr)
{if (1 == opr){GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_SET);}else{GPIO_WriteBit(GPIOC, GPIO_Pin_13, Bit_RESET);}
}void key_exti_init()
{EXTI_InitTypeDef key_exti;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12);key_exti.EXTI_Line = EXTI_Line12;key_exti.EXTI_LineCmd = ENABLE;key_exti.EXTI_Mode = EXTI_Mode_Interrupt;key_exti.EXTI_Trigger = EXTI_Trigger_Rising_Falling;EXTI_Init(&key_exti);
}void key_nvid_init()
{NVIC_InitTypeDef key_nvic;key_nvic.NVIC_IRQChannel = EXTI15_10_IRQn; key_nvic.NVIC_IRQChannelCmd = ENABLE;key_nvic.NVIC_IRQChannelPreemptionPriority = 1;key_nvic.NVIC_IRQChannelSubPriority = 0;NVIC_Init(&key_nvic);
}void uart1_send(const u8 *data)
{while(*data){USART_ClearFlag(USART1, USART_FLAG_TC);USART_SendData(USART1,*data++);while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET); //delay_ms(1);}
}int main(void)
{uart1_init();led_init();key_init();key_exti_init();key_nvid_init();uart1_send("main\r\n");while (1){//delay(1);}
}static char flag = 0;void EXTI15_10_IRQHandler()
{if (SET == EXTI_GetITStatus(EXTI_Line12)){if(0 ==flag){uart1_send("get data: 0\r\n");led_opr(0);flag = 1;}else{uart1_send("get data: 1\r\n");led_opr(1);flag = 0;}EXTI_ClearITPendingBit(EXTI_Line12);}
}
main函数
int main(void)
{uart1_init();led_init();key_init();key_exti_init();key_nvid_init();while (1){//delay(1);}
}
眼熟的函数
led_init,key_init在上一节“STM32(6):轮训方式让按键点亮LED”已经做了详细讲解,这里不再做赘述。
按键中断初始化
void key_exti_init()
{EXTI_InitTypeDef key_exti;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12);key_exti.EXTI_Line = EXTI_Line12;key_exti.EXTI_LineCmd = ENABLE;key_exti.EXTI_Mode = EXTI_Mode_Interrupt;key_exti.EXTI_Trigger = EXTI_Trigger_Rising_Falling;EXTI_Init(&key_exti);
}
定义中断初始化结构体
第一行代码定义了中断初始化结构体:EXTI_InitTypeDef ,其中EXTI是EXTernal Interrupt的缩写;即外部中断,什么是外部中断呢?要了解外部中断首先要了解中断(Interrupt),首先中断描述的是操作系统响应外部硬件请求的过程;中断响应需要在操作系统层面暂停当前正在运行的程序,转而到响应中断,并执行中断函数,当中断处理完毕后,还会恢复之前的服务/程序运行环境,继续执行。 就像你在写代码,突然老板叫你去一趟办公室,你需要保存一下程序,锁屏,然后来到老板办公室,聊了聊工作进度,聊完后回到座位,解锁屏幕,继续开发;老板叫你去办公室,就是中断,你保存代码,就是保存现场;回来继续编码就是中断响应完毕后继续执行之前的服务。 中断有硬中断和软中断,我们说的中断,一般都是指硬中断,即CPU相应硬件发出的中断请求,本质是硬件发出的(中断)信号;在STM32里面,软中断则是在软件层面的发出的中断,即通过调用EXTI_GenerateSWInterrupt()来进行触发,写软件中断寄存器(software Interrupt event register)实现中断,流程和机制和硬件中断类似,目的就是提高执行的优先级。 STM32的外部中断(EXTI),就是指硬中断,即由外设发起的中断。
启动AFIO
第二行代码RCC_APB2PeriphClockCmd则是启动了AFIO;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
AFIO的全称Alternative fuction I/O and debug configuration,可选IO功能以及调试配置。所谓的AFIO其实就是重用GPIO引脚;当需要GPIO和某个特定功能进行系统级别绑定的时候,就需要使用AFIO;比如,如果想要把正常PC13是和LED灯亮灭功能绑定在一起的,如果想要让PC13响应中断,相当于把PC13的功能进行重新绑定,这个时候就需要配置AFIO;当然AFIO并不限于中断,还可以把某个引脚和定时器(后面会讲到)功能绑定,也是需要AFIO;不过如果是配置引脚响应外部中断,必须要使能AFIO; 总之,需要把GPIO引脚和某个常规的外设功能进行绑定,所谓常规功能是指片内外设的功能,片外外设功能,此时就需要AFIO;不过如果你自己想要使用某个引脚,其实是不需要AFIO,因为自己实现的功能并不属于“外设的常规功能”,比如上一节通过轮训的方式来点亮LED,就是使用PB123,并不需要使用AFIO;
配置中断触发引脚
第三行代码是配置中断响应引脚,这里配置的是PB12,在“STM32(5):轮询方式让按键点亮LED”小节中,PB12被配置为周期性的读取,根据高低电平来控制LED等,在本节PB12被作为中断触发的引脚。
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12);
中断配置
key_exti.EXTI_Line = EXTI_Line12;
key_exti.EXTI_LineCmd = ENABLE;
key_exti.EXTI_Mode = EXTI_Mode_Interrupt;
key_exti.EXTI_Trigger = EXTI_Trigger_Rising_Falling;EXTI_Init(&key_exti);
中断配置第一个配置的就是中断线,因为触发中断的是引脚,在EXTI里面基于引脚来对中断是分组的,每一个组称之为中断线,如下图所示,所有的下标为0的分到EXTI0线,比如PA0,PB0,PC0... ...都是EXTI0线(组)的;下标为1的,PA1,PB1,PC1... ...都被分到EXTI1线;每个程序每组只能有一个引脚被成功配置为触发中断,否则就会覆盖。引脚编号都是16个,所以中断线也是16组,之所以要对中断线进行分组,主要目的是为了分配中断号,下面内容将会看到中断号的设计是将几组中断线分配到了一个中断号(这样设计可以减少系统中断数,减小系统复杂度): 第二行配置的使能中断线,即清空中断线的状态;
key_exti.EXTI_LineCmd = ENABLE;
第三行配置的是中断模式,这里配置的是Interrupt,另外一个选项是“事件”,中断有两种,一种是需要软件层面介入,这种被称之为Interrupt,而另外一种是不需要软件层面介入,直接硬件层面全全处理,这种称之为事件。“中断模式”需要和“软中断”以及“硬中断”区别开来,软硬中断都是属于“Interrupted”,因为他们都是需要软件介入,即都需要执行软件层面的中断函数,差别只是在于软中断需要在软件层面手动写入“软件中断事件寄存器”,而硬中断则是在有硬件层面基于边沿触发中断。
key_exti.EXTI_Mode = EXTI_Mode_Interrupt;
接着配置项是触发边沿,这里采用的上升沿和下降沿都触发,或者说上升沿和下降沿都“敏感”;之所以要这样配置,是因为我们的设定是按键按下灯亮,按键松开,灯灭,其中按键按下是低电平,即由高电平到低电平,是下降沿,按键松开电平由低电平到高电平,是上升沿;所以中断触发是上升沿和下降沿都是要触发(关于上升沿和下降沿,我们会在后面的番外篇做介绍)。 key_exti.EXTI_Mode = EXTI_Mode_Interrupt;
最后调用EXTI_Init函数,来写入寄存器,使得配置生效。
EXTI_Init(&key_exti);
NVIC配置
void key_nvid_init()
{NVIC_InitTypeDef key_nvic;key_nvic.NVIC_IRQChannel = EXTI15_10_IRQn;key_nvic.NVIC_IRQChannelCmd = ENABLE;key_nvic.NVIC_IRQChannelPreemptionPriority = 1;key_nvic.NVIC_IRQChannelSubPriority = 0;NVIC_Init(&key_nvic);
}
什么是NVIC?Nested Vectored Interrupt Controller,内嵌向量中断控制器。NVIC定义了处理中断的优先级,在NVIC里面中断是有两个级别,第一个级别是抢占权限,即A中断发生了,如果B中断的抢占优先级高于A,那么A将会被中断,转而执行B,等待B执行完毕后,再来执行A,就是嵌套/递归的感觉,这个就是为什么这种中断处理机制被称之为Nested Vectored(递归向量)。 那么什么是Vectored?知乎上面有关于这个问题的大讨论:(6 条消息) 中断向量为什么叫中断向量? - 知乎 (zhihu.com);主要是两大阵营,一个认为Vector描述的是“容器”的意思;我个人觉得第二种解释,Vector的意思是“指针”更加贴切,因为从“中断向量表”这个名称来看,说明这个表中每一项都是一个“中断向量”,此时Vector再翻译为容器,似乎说不通。 再拉回代码:
key_nvic.NVIC_IRQChannel = EXTI15_10_IRQn;
key_nvic.NVIC_IRQChannelCmd = ENABLE;
第一行代码是配置中断通道(中断线),这里配置EXTI15_10_IRQn,代表就是配置响应的中断线范围是1015;第二行代码则是使能中断线,之所以要把几个中断线捏在一起,目的就是减少中断号,从而简化系统; 我们看一下定义,EXTI15_10_IRQn是定义在stm32f10x.h文件中;我截取了一部分,可以看到枚举值EXTI15_10_IRQn是用来的定义中断号的(Interrupt Numbers),除了EXIT,还有TIM,I2C等等中断的中断号,外部中断有6个中断号,第一个是中断组59(12行),第二个就是本次代码中出现的1015(18行);中断组14是具有独立的中断号(4~8行):
typedef enum IRQn{
/****** STM32 specific Interrupt Numbers *********************************************************/
... ...EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt
... ...
#ifdef STM32F10X_MD... ...EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */TIM1_BRK_IRQn = 24, /*!< TIM1 Break Interrupt */... ...I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */... ...... ...EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
#endif /* STM32F10X_MD */
}
为什么中断号配置“EXTI15_10_IRQn”呢?因为在配置key的EXTI的时候,配置的就是12号中断线:
void key_exti_init(){... ...key_exti.EXTI_Line = EXTI_Line12; // 指定是12号中断线... ...}
而在STM32里面,内置中断号包含有12号的,只有EXTI15_10_IRQHandler。
NVIC的优先级
接下来的两行代码则是配置中断的优先级:
key_nvic.NVIC_IRQChannelPreemptionPriority = 1;
key_nvic.NVIC_IRQChannelSubPriority = 0;
NVIC里面的C是controller,代表要基于NVIC的规则来对中断进行管理。NVIC定义了那些规则?
- 抢占优先级&嵌套,所谓的嵌套是指A中断在执行,B中断来了,A要停下啦,让B先执行,B完事后,再有A来做;即中断嵌套,这个也是为什么叫NVIC的原因,N是Nested,嵌套之意(V:Vector,I:Interrupt,C:Controller,全译就是:嵌套向量中断控制器;B之所以能够让A暂停是因为B的级别要高,这个可以嵌套执行中断的等级称之为Preemption Priority,抢占优先级;
- 执行优先级,用于当两个中断的抢占优先级(Preemption Priority)相同的时候,那么就是排队,按照先来先执行,执行完一个再来执行下一个;同时来的话,那么就由执行优先级来决定先执行谁,这就没有中断嵌套的概念了;来晚了就是要排队,即使你的优先级高也没有;你的优先级只是当同时到来发生冲突的时候,才有用,这个在STM32里面称之为Sub Priority,子优先级;
- 向量表位置优先级,对于抢占优先级相同,执行优先级相同的两个向量同时来了怎么办?根据中断向量表的定义的位置来决定位置;
中断向量表
上一小节中提到了中断向量表,这个小节我们就来关注一下中断向量表;本次实验使用EXTI15_10_IRQHandler这个中断函数,通过下面截取的代码,可以看出来,所谓的“中断向量表”,其实就是定义了中断函数的指针,实现了指定的函数,当指定的中断触发,就会执行指定的中断函数,中断号40对应的中断向量就是“EXTI15_10_IRQHandler”:
__Vectors DCD __initial_sp ; Top of Stack
... ...DCD EXTI0_IRQHandler ; EXTI Line 0
... ...DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
... ...DCD USART1_IRQHandler ; USART1
... ... DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
... ...
再进一步分析一下,会发现其实对于NVIC的优先级配置(包括后面会提到的优先级组PriorityGroup),其实都是针对这个“中断号40的”的中断进行的配置。 NVIC函数最后调用的NVIC的初始化函数,来生效配置;
NVIC_Init(&key_nvic);
中断函数
static char flag = 0;
void EXTI15_10_IRQHandler()
{if (SET == EXTI_GetITStatus(EXTI_Line12)){if(0 ==flag){led_opr(0);flag = 1;}else{led_opr(1);flag = 0;}EXTI_ClearITPendingBit(EXTI_Line12);}
}
中断线配置
首先是if分支代码,“EXTI_GetITStatus”代表判断触发的是否是12号中断线,做此判断是因为中断线10~15号的中断都会触发此函数,所以首先判断一下该响应的中断线号:
if (SET == EXTI_GetITStatus(EXTI_Line12))
{... ...
}
亮灭判断
因为在配置边沿触发场景的时候,配置的是上升沿,下降沿都触发,所以按下以及抬起来都是会触发中断,一个是亮灯一个灭灯,这里设置了一个全局变量flag,按下(高电平到低电平,下降沿)灯亮,松开(低电平到高电平,上升沿)灯亮,其中led_opr里面封装的即使控制PC13引脚的高低电平,可见封装的好处,就是调用的时候,直接call函数,传参数即可:
if(0 ==flag){led_opr(0);flag = 1;}else{led_opr(1);flag = 0;}
}
清空寄存器状态
中断的最后,需要清空一下寄存器位内容,虽然中断本身不再需要轮训,但是对于寄存器位的读取,在STM32中采用的轮询机制,所以如果不把寄存器位置清空,发生了一次中断,将会不断的进行触发,所以每次响应完毕中断后,需要将(中断线)寄存器的位清空,这里是清空12号中断线的位:
EXTI_ClearITPendingBit(EXTI_Line12);
中断函数里面函数一定要尽快执行完毕,不能有延时或者耗时的操作,如果有,则需要需要跳出中断函数之后再处理,比如,基于生产者消费者模式,放到缓存中,然后再进行后续的处理,这种处理也被称之为“下半段”处理,即将耗时的操作后续放到内核中处理,但是不要放在中断函数中。
中断寄存器操作流程
那么,STM32里面负责中断都有哪些寄存器,他们又是如何进行交互的呢? 中断信息首先从输入线(Input Line)进入到处理电路:
- 首先是检测边沿,检测的结果将会写入到上升沿寄存器(Rising trigger selection register)或者下降沿寄存器(Falling trigger selection register);
- 然后是进入到后续“或门”,或门处理的是否有“硬件中断”(上升/下降触发)或者“软件中断”,简单讲就是检测是否有中断,是否有“软件中断”是根据“软中断事件寄存器(Software Interrupt event register)”状态来进行判断的;
- 接着是来到了“与门”,这个与门判断是中断屏蔽寄存器和中断事件做与运算,只有有一个为假就没有后续处理了,所谓的中断屏蔽寄存器(Interrupt mask register)就是配置那些中断线要被屏蔽掉,即不做中断响应,所以如果从输入线(Input Line)中响应的中断号是被屏蔽的,那么,就没有后续了;
- 如果存在中断,且中断号没有被屏蔽,那么就会写入到挂起请求寄存器(Pending request register),NVIC中断控制器将会轮询的方式访问该寄存器,来判断是否有中断到来,如果有则根据中断线号,来调用相应的中断函数。
- 另外一个分支是根据是否有中断以及事件屏蔽寄存器来共同判断是否要产生脉冲,这个分支和本次中断无关,所以略过。 我们在中断函数中最后EXTI_ClearITPendingBit就是将挂起请求寄存器(Pending Request Register)数据清空。 上面提到了中断处理函数要尽快处理,就是因为pending寄存器是会被覆盖的风险的,如果中断函数处理时间长了,后续到来的中断可能就会被再后面到来的中断给覆盖掉,所以要尽快处理到来的中断,避免pending的中断被覆盖。
附录
上升沿/下降沿选择寄存器说明
在上升沿和下降沿选择寄存器的说明中,有如下的内容: The external wakeup lines are edge triggered, no glitches must be generated on these lines.If a rising edge on external interrupt line occurs during writing of EXTI_RTSR register, thepending bit will not be set. Rising and Falling edge triggers can be set for the same interrupt line. In this configuration,both generate a trigger condition. 大意是:
- 外部唤醒都是边缘触发的,不能有毛刺波形,即窄脉冲,如果有毛刺波形,将会影响唤醒;
- 在写入上升沿/下降沿中断寄存器的时候,如果此时有上升沿/下降沿触发中断,该中断将会被忽略;
- 一个中断线(号)可以同时配置上升沿触发和下降沿触发,其实我们按键这个例子就是同时配置了上升沿和下降沿。
中断触发流程
下图是ARM CPU的触发中断的流程:
- 中断是由片内外设(比如Timer,UART)/外设(比如按键)触发指定引脚而产生的的,即触发是由STM32负责的;
- 由引脚触发进而产生中断;
- 然后STM32会把中断的请求丢给ARM CPU的NVIC来处理;NVIC将会对中断进行调度,NVIC决定了如何响应中断(比如是否抢断正在执行的中断,如果两个抢占优先级相同的中断同时到来如何来决定响应哪一个);
- 然后再根据中断向量表中绑定的中断函数;
- 调用指定的中断函数。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 【Python】win32api调用后ctrl键弹不起,无法释放的原因
# 这里有一个重大坑点,不是用KEYEVENTF_EXTENDEDKEY,否则会弹不起来,要用0win32api.keybd_event(17, 0, 0, 0)win32api.keybd_event(18, 0, 0, 0)win32api.keybd_event(65, 0, 0, 0)# 全部放开win32api.keybd_event(17, 0, win32con.KEYEVENT…...
2024/4/19 13:15:17 - Linux Shell脚本生成用户并授权
#!/bin/bashdirpath"/opt/gjoy" if [ ! -d ${dirpath} ]; thenmkdir -p ${dirpath} fi cd ${dirpath}pName$(rpm -qa | grep expect) if [ $? -eq 0 ]; thenecho "软件包"expect"已经安装" elseecho "软件包"expect"没有安装&qu…...
2024/4/17 21:09:34 - DCNv2在pytorch1.8.1的安装(经过测试)
我的电脑环境 项目名称版本cuda版本11.1pytorch版本1.8.1ubuntu版本18.04 在安装centerFusion(centerNet的多模态融合版本)时,遇到DCNv2不支持新版pytorch的问题,通过寻找其他博客,发现他们只找到了pytorch1.7的新版本…...
2024/4/14 11:20:59 - Armv8-A虚拟化手册(1)
1. Overview 本指导描述ARMv8-A AArch64的虚拟化支持。所覆盖的内容包括stage2转换,虚拟化异常和trapping。 本文档包括一些基本的虚拟化理论作为introduction,并给出hypervisor使用这些特性的例子。它不包括一些特定hypervisor的操作,或试图…...
2024/4/14 11:21:09 - NFS服务端搭建步骤
NFS服务端搭建步骤 第一步:安装并检查NFS和RPC服务 yum install nfs-utils rpcbind -y rpm -qa nfs-utils rpcbind第二步:启动RPC服务和NFS服务 (必须先启动RPC服务,然后再启动NFS服务) systemctl start rpcbind systemctl start nfs ps -e…...
2024/4/15 13:48:08 - python培训3
1. def leijia(n):#定义累加函数sum10#和初始话for i in range(1,2*n,2):#循环累加sum1ireturn sum1#返回累加的值 if __name__ __main__:#在本函数文件中name等于main,其他时等于文件名a input()#输入字符sum2 leijia(eval(a))#调用函数进行累加,并…...
2024/4/14 11:20:59 - 2021年广东省安全员A证第三批(主要负责人)报名考试及广东省安全员A证第三批(主要负责人)考试内容
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:广东省安全员A证第三批(主要负责人)报名考试是安全生产模拟考试一点通总题库中生成的一套广东省安全员A证第三批(主要负责人)考试内…...
2024/4/14 11:21:14 - Java15:包装类型
Java的数据类型分两种: 基本类型:byte,short,int,long,boolean,float,double,char引用类型:class、interface 引用类型可以赋值为null(表示空&a…...
2024/4/18 9:46:06 - C++ - 初始化列表、友元、static成员
目录 一、初始化列表 二、static成员 三、友元 一、初始化列表 初始化列表写在构造函数参数下面,用冒号开始,逗号分隔,每一个成员属性后用括号内的参数进行初始化。 class Date { public:Date(int year, int month, int day): _year(year)…...
2024/4/14 11:21:04 - vue-05
路由 路由就是对应关系 前端路由的概念与原理 前端路由:Hash地址与组件之间的对应关系 SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与切换都在这唯一的一个页面内完成。 此时,不同组件之间的切换需要通过前端路由来…...
2024/4/15 6:16:47 - Leetcode 算法面试冲刺 实战 一(链表)(八)
文章目录练习题219 在排序链表中插入一个节点452 删除链表中的元素511 交换链表当中两个节点228 链表的中点170 旋转链表99 重排链表练习题 219 在排序链表中插入一个节点 在链表中插入一个节点。 写了一个,但是爆了一个错,不知道是什么错误 de…...
2024/4/14 11:21:29 - 沙河大学城校城融合实践基地预约系统解密
沙河高教园区又一巨大进展,预约系统为志愿服务升级添砖加瓦 沙河大学城校城融合实践基地是在北京沙河高教园区管委会指导下,周边各个学校一起多元参与、协商共建、科技支撑的协同治理平台,是引领和带动高校师生参与共建魅力大学城的社会动员…...
2024/4/23 17:05:39 - 强化学习学习笔记
强化学习 一.基本概念 1.什么是强化学习: 个体主动对环境作试探而不是静止地被动地等待环境对试探动作产生的反馈是评价性的,个体根据环境的评价来调整以后的行为,是一种从环境状态到行为映射的学习。 一个以“打翻水杯”为例的机器-环境…...
2024/4/18 0:22:57 - Java8 中计算两个日期间隔多少年、多少月、多少天的实现
import org.apache.commons.lang.time.DurationFormatUtils; import java.util.Date;public class DateUtil {/*** 计算两个日期间隔多少年、多少月、多少天的实现** param date* return*/public static String getYearToDate(Date date){Date now new Date();String formatPe…...
2024/4/20 1:24:11 - python第三次培训
1. def leijia(n):#定义累加函数sum10#和初始话for i in range(1,2*n,2):#循环累加sum1ireturn sum1#返回累加的值 if __name__ __main__:#在本函数文件中name等于main,其他时等于文件名a input()#输入字符sum2 leijia(eval(a))#调用函数进行累加,并…...
2024/4/18 10:24:46 - MATLAB画图基础(3)
离散数据画图 生活中的一些数据eg五个学生分别的加权成绩50 98 75 80 95 等高线 二元函数绘制 zf(x,y) meshgrid是一个可以为我们建立独立变量的易用函数,目的是产生矩阵元素 eg 只需改变z的取值即可 eg2: 用contour3&#x…...
2024/4/19 20:17:40 - React setState 事件总线 受控组件
React setState 事件总线 受控组件 参考:王红元老师的React setState 开发中我们并不能直接通过修改state的值来让界面发生更新: 因为我们修改了state之后,希望React根据最新的State来重新渲染界面,但是这种方式的修改React并不…...
2024/4/20 2:12:05 - 2021年制冷与空调设备运行操作考试资料及制冷与空调设备运行操作考试试题
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:制冷与空调设备运行操作考试资料是安全生产模拟考试一点通总题库中生成的一套制冷与空调设备运行操作考试试题,安全生产模拟考试一点通上制冷与空调设备运行操作作业手…...
2024/4/14 11:22:09 - GoogLeNet的全面解析与手撕实现过程
目录 GoogLeNet之心——Inception Block的概念 GoogLeNet的实现 Inception的各种后续版本 GoogLeNet之心——Inception Block的概念 在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。这很可能得名于电影《盗梦空间》&…...
2024/4/7 15:06:50 - 计算机毕业设计android的单词记忆英语考试系统app(源码+系统+mysql数据库+Lw文档)
项目介绍 随着移动互联网的高速发展,智能手机得到了快速普及。为了让智能手机用户能够随时随地查看信息、上网等,一种高效的办法就是将应用系统的功能拓展到手机终端上。在我国学习英语已经成为了一个潮流,随时随地学习英语一直是一个需要解…...
2024/4/14 11:21:59
最新文章
- Web前端开发 小实训(一) 成绩分类统计
用于学生web前端开发课程实训练习,掌握基本语法和数据类型 实训目的 使用分支语句,完成分数统计与等级对比,通过输入框输入分数,可以根据分数多少划分等级。 参考思路: 分析题目:根据输入分数进行等级划分。 操作过…...
2024/4/28 6:58:45 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 如何转行成为产品经理?
转行NPDP也是很合适的一条发展路径,之后从事新产品开发相关工作~ 一、什么是NPDP? NPDP 是产品经理国际资格认证,美国产品开发与管理协会(PDMA)发起的,是目前国际公认的唯一的新产品开发专业认证ÿ…...
2024/4/22 16:14:13 - 图解深度神经网络的架构
图解深度神经网络的架构 基线模型 AlexNet 是突破性的架构,它使卷积网络(CNN)成为处理大型图像分类任务的主要机器学习算法。介绍 AlexNet 的论文呈现了一张很好的图,但是好像还缺点什么…… AlexNet 架构图示(图源&…...
2024/4/25 9:00:48 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/28 3:28:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57