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

至少保存十个以上域名网站/百度关键词优化培训

至少保存十个以上域名网站,百度关键词优化培训,长沙建站找有为太极环境遵,做网站贵不一、STM32的5种定时器简介 1.独立看门狗(IWDG) VS 窗口看门狗(WWDG) 1.独立看门狗(IWDG) 独立看门狗:当没有到设定时间之前,给它喂了狗,就会回到初始值。 2.窗口看门狗…

一、STM32的5种定时器简介

1.独立看门狗(IWDG) VS 窗口看门狗(WWDG)

1.独立看门狗(IWDG)

独立看门狗:当没有到设定时间之前,给它喂了狗,就会回到初始值。

2.窗口看门狗(WWDG)

窗口看门狗:只有在设定的窗口时间范围内喂才可以起效果

最适合哪些要求看门狗在精确计时窗口起作用。

2.Systick定时器

3.高级定时器(TIM1+TIM8)

4.通用定时器(TIMx)

1)输入捕获:通过输入电平进行捕获

2)产生中断:

        定时器时间到

        触发事件

3)正交编码器和霍尔传感器(测小车速度)

5.基本定时器(TIM6 & TIM7)

1)最多只能计数65535(2的16次方)

2)预分频器(因为在定时器的频率不需要那么快)

3)可以产生中断

二、SYSTICK定时器

0.SYSTICK的提出

我们之前的51只有一个主线(无操作系统),一个进程走到死

我们想要多种进程并行工作,但是实际上无法这样。因为后面的程序可能还没有等到执行,时间就结束了。所以我们将每一个程序都分成多个小进程,第一个进程的第一个小部分执行完成在执行第二个进程的第一小部分....【从而实现微观上的串行,宏观上的并行】

1.SYSTICK定时器的作用

1)专用于生产RTOS的系统滴答时钟【因为RTOS需要多进程执行】

2)可用于裸机程序中短时间精确延时函数

3)可用于普通定时器中断功能

2.SYSTICK定时器的数据手册

https://www.st.com/resource/en/programming_manual/cd00228163-stm32f10xxx-20xxx-21xxx-l1xxxx-cortex-m3-programming-manual-stmicroelectronics.pdf

SYSTICK和NVIC不属于SoC部分【属于内核外设】

1.24个定时器

2.各种寄存器

1.STK_CTRL(控制状态)

2.STK_LOAD(初始值)

我们计算出来的值要-1

因为计时是4 3 2 1 0 4 3 2 1 0【0才表示结束】

3.STK_VAL(计数值)

4.STK_CALIB

校准

3.SYSTICK寄存器在标准库中的封装

SYSTICK放在misc.c中

1. SysTick_CLKSourceConfig--分频设置

本函数在misc.c中

SYSTICK本身没有分频器。所以需要通过本函数进行设置

/*** @brief  Configures the SysTick clock source.* @param  SysTick_CLKSource: specifies the SysTick clock source.*   This parameter can be one of the following values:*     @arg SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 selected as SysTick clock source.*     @arg SysTick_CLKSource_HCLK: AHB clock selected as SysTick clock source.* @retval None*/
void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{/* Check the parameters */assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));if (SysTick_CLKSource == SysTick_CLKSource_HCLK){SysTick->CTRL |= SysTick_CLKSource_HCLK;}else{SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;}
}

全局搜索SYSTICK

2.SysTick_Config--触发systick中断

本函数在core_cm3.h中

Systick config函数配置的状况是: 默认使用AHB时钟。会产生中断,中断优先级为最低,并且最末尾启动了定时器

/*** @brief  Initialize and start the SysTick counter and its interrupt.** @param   ticks   number of ticks between two interrupts* @return  1 = failed, 0 = successful** Initialise the system tick timer and its interrupt and start the* system tick timer / counter in free running mode to generate * periodical interrupts.*//**Systick config函数配置的状况是:默认使用AHB时钟。会产生中断中断优先级为最低,并且最末尾启动了定时器
*/
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{ 
//检验有没有超过24位寄存器
//SysTick_LOAD_RELOAD_Msk:  0xFFFFFFulif (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */
//减一:因为我们是从0开始的 ,但是一般我们都不在乎因为影响不大                                                              SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
//设置中断优先级,默认设置最低NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */SysTick->VAL   = 0;      //让它上来直接完了                                    /* Load the SysTick Counter Value *///SysTick_CTRL_CLKSOURCE_Msk(1):默认使用AHB//SysTick_CTRL_TICKINT_Msk:默认会产生中断//SysTick_CTRL_ENABLE_Msk:启动了定时器SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk   | SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */return (0);                                                  /* Function successful */

3.注意点:SysTick_Config VS SysTick_CLKSourceConfig的调用顺序

我们在调用库函数进行初始化的时候,要先调用【SysTick_Config】然后再调用【SysTick_CLKSourceConfig】,因为再【SysTick_Config】中对Systick_CTRL中是对其中几位bit进行直接赋值,而不是位或。所以如果先定义【SysTick_CLKSourceConfig】则相关寄存器的值可能被覆盖掉。

4.SYSTICK定时器的2种工作方式

1.中断方式

使能后,到中断处理程序查

2.查询方式

检测STK_VAL,因为VAL会不断减少

5.SYSTICK定时器的定时计算

1.公式:重装载值=systick时钟频率(Hz)*想要定的时间(s)

2.例子:1ms 

我们使用原始的频率:72MHZ=72 000 000HZ

以1s为单位---》1ms==0.001s

CNT=72 000 000*0.001=72 000

查看是否超过2的24次方

3.查询方式和中断方式都这样计算

6.SYSTICK中断实现LED每200ms闪烁一次【中断方式-interrupt】

https://www.cnblogs.com/kinson/p/7967332.html

0.注意点:

1)SYSTICK是自动清除中断,不需要手动将其清除

2)SYSTICK是内核中的,所以不需要打开SYSTICK时钟,它一直都是打开的

1.接线

我们将led的j19接到PB0-PB7,但是实际上我们就操作led1,所以使用到PB0

2.NVIC_Configuration

void NVIC_Configuration(void)
{// NVIC_InitTypeDef NVIC_InitStructure;#ifdef  VECT_TAB_RAM  /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);   //分配中断向量表
#else  /* VECT_TAB_FLASH  *///表示从FLASH中启动;;/* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif/* Configure one bit for preemption priority */// NVIC_PriorityGroup_1:2个抢占优先级,8个次优先级/*NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  //设置中断优先级// Enable the SYSTICK Interrupt //设置为SYSTICK//这里我们将下面代码注释起来是因为【NVIC_IRQChannel】只接受正整数//但是我们【SysTick_IRQn】是负数,所以不能正确输出NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn; //中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =  0;  //强占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//次优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //通道中断使能NVIC_Init(&NVIC_InitStructure);//初始化中断*/
}

3.GPIO_Configuration

//GPIO初始化
void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;//PB0 ---LED1【LED的显示输出】GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出GPIO_Init(GPIOB, &GPIO_InitStructure);// 默认输出0让LED亮//RESET=0//SET=1GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_RESET);			}

4.RCC_Configuration

//RCC的配置
void RCC_Configuration(void){//因为起始代码中已经调用SystemInit将主时钟设置为72MHZ//所以我们这里RCC直接使能时钟就可以//使能GPIO端口//通过PB0控制LED1//因为我们使用到的是PB0,所以只使用到GPIOBRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//因为systick属于cpu部分的,所以时钟始终打开的,不需要再去打开//所以这里只是打开GPIO的时钟即可}

5. SYSTICK_Configuration

//SysTick_Config:是SYSTICK的启动函数
void SYSTICK_Configuration(void){/*这个时间超时了//主频是72MHZ,定时时间是500ms//ticks=72 000 000*0.5 =3600 000SysTick_Config(36000000);//1677 7216*///100毫秒//范围:233ms//ticks=72 000 000*200ms=14400000SysTick_Config(14400000);//SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
}

6.main

 

#include "stm32f10x.h"                  // Device header
/**使用SYSTICK控制led的闪烁【中断式】PB8控制LED8
*///函数声明
//RCC的配置
void RCC_Configuration(void);
//GPIO初始化
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void SYSTICK_Configuration(void);//全局变量定义
EXTI_InitTypeDef EXTI_InitStructure;
ErrorStatus HSEStatartUpStatus;int main(){//系统时钟配置RCC_Configuration();//NVIC配置NVIC_Configuration();//配置GPIOGPIO_Configuration();SYSTICK_Configuration();while(1);return 0;
}//RCC的配置
void RCC_Configuration(void){//因为起始代码中已经调用SystemInit将主时钟设置为72MHZ//所以我们这里RCC直接使能时钟就可以//使能GPIO端口//通过PB0控制LED1//因为我们使用到的是PB0,所以只使用到GPIOBRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//因为systick属于cpu部分的,所以时钟始终打开的,不需要再去打开//所以这里只是打开GPIO的时钟即可}//GPIO初始化
void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;//PB0 ---LED1【LED的显示输出】GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出GPIO_Init(GPIOB, &GPIO_InitStructure);// 默认输出0让LED亮//RESET=0//SET=1GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_RESET);			}void NVIC_Configuration(void)
{// NVIC_InitTypeDef NVIC_InitStructure;#ifdef  VECT_TAB_RAM  /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);   //分配中断向量表
#else  /* VECT_TAB_FLASH  *///表示从FLASH中启动;;/* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif/* Configure one bit for preemption priority */// NVIC_PriorityGroup_1:2个抢占优先级,8个次优先级/*NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  //设置中断优先级// Enable the SYSTICK Interrupt //设置为SYSTICK//这里我们将下面代码注释起来是因为【NVIC_IRQChannel】只接受正整数//但是我们【SysTick_IRQn】是负数,所以不能正确输出NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn; //中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =  0;  //强占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//次优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //通道中断使能NVIC_Init(&NVIC_InitStructure);//初始化中断*/
}//SysTick_Config:是SYSTICK的启动函数
void SYSTICK_Configuration(void){/*这个时间超时了//主频是72MHZ,定时时间是500ms//ticks=72 000 000*0.5 =3600 000SysTick_Config(36000000);//1677 7216*///100毫秒//范围:233ms//ticks=72 000 000*200ms=14400000SysTick_Config(14400000);//SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
}

7.注意点:ticks的时间设置

我们已经知道systick有24个寄存器,所以我们最大的数值范围不能超过2的24次方。

所以我们计算出来的值不能超过上面那个

而根据我们单片机上面使用的是72MHZ的频率

则我们ticks的范围是16 777 216/72 000 000

举个例子

如果我们想要设置100ms

则ticks=72 000 000 *0.1=7,200,000

8.SYSTICK中断实现LED每200ms闪烁一次【查询方式--delay】

0.解释

我们通过使用delay进行精确的延时

1.代码解析

 1.GPIO_Configuration

//GPIO初始化
void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;//PB0 ---LED1【LED的显示输出】GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出GPIO_Init(GPIOB, &GPIO_InitStructure);// 默认输出0让LED亮//RESET=0//SET=1GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_RESET);			}

2.RCC_Configuration

//RCC的配置
void RCC_Configuration(void){//因为起始代码中已经调用SystemInit将主时钟设置为72MHZ//所以我们这里RCC直接使能时钟就可以//使能GPIO端口//通过PB0控制LED1//因为我们使用到的是PB0,所以只使用到GPIOBRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//因为systick属于cpu部分的,所以时钟始终打开的,不需要再去打开//所以这里只是打开GPIO的时钟即可}

3.delay_us

此代码要根据频率来进行修改

//用systick计数器来帮我们实现us级别的精确延时
//这个函数成立有2个条件:
//1.主频必须是72MHZ
//2.us要小于(2的24次方)=1864 135us=1.8s
void delay_us(unsigned int us){//记录CTRL的countflag位的值unsigned int tmp=0;//思路是先把systick的时钟源设置好,然后给一个正确的ticks//然后使能systick,while循环等待countflag置位则时间到//72MHZ主频,我们使用8分频,72/8=9MHZ systickSysTick->LOAD=us*9;SysTick->VAL=0;//我们要先设置上面的LOAD和VAL,在进行使能//时钟源是AHB/8,禁止中断,使能systickSysTick->CTRL =0x01;//检测什么时候时间结束//查看CTRL中的countflagdo{tmp=SysTick->CTRL;}while(!(tmp&(1<<16)));//时间到,关闭定时器SysTick->VAL=0;SysTick->CTRL =0x00;
}

4.delay_ms

//不能大于 1864
void delay_ms(unsigned int ms){//记录CTRL的countflag位的值unsigned int tmp=0;//思路是先把systick的时钟源设置好,然后给一个正确的ticks//然后使能systick,while循环等待countflag置位则时间到//72MHZ主频,我们使用8分频,72/8=9MHZ systickSysTick->LOAD=ms*9000;SysTick->VAL=0;//我们要先设置上面的LOAD和VAL,在进行使能//时钟源是AHB/8,禁止中断,使能systickSysTick->CTRL =0x01;//检测什么时候时间结束//查看CTRL中的countflagdo{tmp=SysTick->CTRL;}while(!(tmp&(1<<16)));//时间到,关闭定时器SysTick->VAL=0;SysTick->CTRL =0x00;}

5.main

#include "stm32f10x.h"                  // Device header
/**使用delay控制led的闪烁--与systick进行等价实现【查询式】PB8控制LED8
*///函数声明
//RCC的配置
void RCC_Configuration(void);
//GPIO初始化
void GPIO_Configuration(void);void delay_ms(unsigned int ms);
void delay_us(unsigned int us);//全局变量定义
EXTI_InitTypeDef EXTI_InitStructure;
ErrorStatus HSEStatartUpStatus;int main(){//系统时钟配置RCC_Configuration();//配置GPIOGPIO_Configuration();while(1){GPIO_WriteBit(GPIOB,GPIO_Pin_8,Bit_RESET);//亮delay_ms(200);GPIO_WriteBit(GPIOB,GPIO_Pin_8,Bit_SET);//灭delay_ms(200);}return 0;
}//RCC的配置
void RCC_Configuration(void){//因为起始代码中已经调用SystemInit将主时钟设置为72MHZ//所以我们这里RCC直接使能时钟就可以//使能GPIO端口//通过PB0控制LED1//因为我们使用到的是PB0,所以只使用到GPIOBRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//因为systick属于cpu部分的,所以时钟始终打开的,不需要再去打开//所以这里只是打开GPIO的时钟即可}//GPIO初始化
void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;//PB0 ---LED1【LED的显示输出】GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出GPIO_Init(GPIOB, &GPIO_InitStructure);// 默认输出0让LED亮//RESET=0//SET=1GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_RESET);			}//用systick计数器来帮我们实现us级别的精确延时
//这个函数成立有2个条件:
//1.主频必须是72MHZ
//2.us要小于(2的24次方)=1864 135us=1.8s
void delay_us(unsigned int us){//记录CTRL的countflag位的值unsigned int tmp=0;//思路是先把systick的时钟源设置好,然后给一个正确的ticks//然后使能systick,while循环等待countflag置位则时间到//72MHZ主频,我们使用8分频,72/8=9MHZ systickSysTick->LOAD=us*9;SysTick->VAL=0;//我们要先设置上面的LOAD和VAL,在进行使能//时钟源是AHB/8,禁止中断,使能systickSysTick->CTRL =0x01;//检测什么时候时间结束//查看CTRL中的countflagdo{tmp=SysTick->CTRL;}while(!(tmp&(1<<16)));//时间到,关闭定时器SysTick->VAL=0;SysTick->CTRL =0x00;
}//不能大于 1864
void delay_ms(unsigned int ms){//记录CTRL的countflag位的值unsigned int tmp=0;//思路是先把systick的时钟源设置好,然后给一个正确的ticks//然后使能systick,while循环等待countflag置位则时间到//72MHZ主频,我们使用8分频,72/8=9MHZ systickSysTick->LOAD=ms*9000;SysTick->VAL=0;//我们要先设置上面的LOAD和VAL,在进行使能//时钟源是AHB/8,禁止中断,使能systickSysTick->CTRL =0x01;//检测什么时候时间结束//查看CTRL中的countflagdo{tmp=SysTick->CTRL;}while(!(tmp&(1<<16)));//时间到,关闭定时器SysTick->VAL=0;SysTick->CTRL =0x00;}

2.中断 VS 查询

查询和中断方式差异:

查询方式是阻塞式的,中断方式是非阻塞的

相关文章:

【STM32】Systick定时器

一、STM32的5种定时器简介 1.独立看门狗&#xff08;IWDG&#xff09; VS 窗口看门狗&#xff08;WWDG&#xff09; 1.独立看门狗&#xff08;IWDG&#xff09; 独立看门狗&#xff1a;当没有到设定时间之前&#xff0c;给它喂了狗&#xff0c;就会回到初始值。 2.窗口看门狗…...

ZooKeeper监控

ZooKeeper Monitor Guide Zookeeper集群进行监控,发现的方案有三种: JMXzookeeper exporterZK Monitor(Since 3.6.0)采用JMX 进行监控,可获取到的指标项不够丰富。Zookeeper Exporter监控可获得的指标项亦不太够丰富。从3.6.0之后,Zookeeper自带的Monitor结合Prometheus、…...

lua # 获取table数组长度

目录 实测结果展示 情况分类 数组开始索引与数组长度 数组元素中间有nil 数组最后的元素为nil...

前端框架Vue学习 ——(七)Vue路由(Vue Router)

文章目录 Vue路由使用场景Vue Router 介绍Vue Router 使用 Vue路由使用场景 使用场景&#xff1a;如下图&#xff0c;点击部门管理的时候显示部门管理的组件&#xff0c;员工管理的时候显示员工管理的组件。 前端路由&#xff1a;指的是 URL 中的 hash(#号)与组件之间的对应关…...

2023-2024-1高级语言程序设计-一维数组

7-1 逆序输出数组元素的值 从键盘输入n个整数存入一维数组中&#xff0c;然后将数组元素的值逆序输出。 输入格式: 第一行输入整数个数n&#xff1b; 第二行输入n 个整数&#xff0c;数据之间以空格隔开。 输出格式: 逆序输出数组元素的值&#xff0c;每个数据之后跟一个空…...

史上最全,从初级测试到高级测试开发面试题汇总,冲击大厂年50w+

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口测试面试相关…...

Python基础入门例程42-NP42 公式计算器(运算符)

最近的博文&#xff1a; Python基础入门例程41-NP41 二进制位运算&#xff08;运算符&#xff09;-CSDN博客 Python基础入门例程40-NP40 俱乐部的成员&#xff08;运算符&#xff09;-CSDN博客 Python基础入门例程39-NP39 字符串之间的比较&#xff08;运算符&#xff09;-C…...

C#的LINQ to XML 类中使用最多的三个类:XElement、XAttribute 和 XDocument

目录 一、XElement 类 1.使用 XElement 类创建一个 xml 文档 &#xff08;1&#xff09;示例源码 &#xff08;2&#xff09;xml文件 2.使用LINQ to SQL或者LINQ to Object获取数据源 &#xff08;1&#xff09;示例源码 &#xff08;2&#xff09;xml文件 3.XElement …...

2023软考-系统架构师一日游

上周六&#xff08;11月4号&#xff09;参见了软考&#xff0c;报的系统架构师&#xff0c;今年下半年是第一次推行机考&#xff0c;简单来分享下大致流程&#xff0c;至于考试难度、考点什么的&#xff0c;这个网上有很多专门研究这些的机构&#xff0c;本人无权发言。考试的经…...

维乐 Prevail Glide带你做破风王者,无阻前行!

对于自行车骑手来说&#xff0c;需要应对的问题有很多&#xff0c;其中最大的问题之一&#xff0c;就是「风阻」。风阻永远都是你越反抗越强&#xff0c;因此为了克服风阻的力量&#xff0c;时间久了&#xff0c;身体自然会造成一定程度的损伤。如何才能调整前行的步伐&#xf…...

企业通配符SSL证书的特点

企业通配符SSL证书是一种数字证书&#xff0c;其可以用于保护多个企业网站&#xff0c;对网站传输信息进行加密服务。这种证书通常适用于拥有多个子域名或二级域名的企事业单位。今天就随SSL盾小编了解企业通配符SSL证书的相关信息。 1. 保护所有域名和子域名&#xff1a;企业通…...

1.2 HTML5

一.HTML5 简介 1.什么是HTML5 HTML5是新一代的 HTML 标准&#xff0c;2014年10月由万维网联盟( W3C&#xff09;完成标准制定。官网地址: w3c提供:HTML StandardWHATWG提供: HTML Standard HTML5在狭义上是指新—代的 HTML 标准&#xff0c;在广义上是指:整个前端。 2.HTML…...

一个例子!教您彻底理解索引的最左匹配原则!

最左匹配原则的定义 简单来讲&#xff1a;在联合索引中&#xff0c;只有左边的字段被用到&#xff0c;右边的才能够被使用到。我们在建联合索引的时候&#xff0c;区分度最高的在最左边。 简单的例子 创建一个表 CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT, code…...

Docker容器技术实战4

11、docker安全 proc未被隔离&#xff0c;所以在容器内和宿主机上看到的东西是一样的 容器资源控制 cpu资源限制 top命令&#xff0c;查看cpu使用率 ctrlpq防止退出回收&#xff0c;容器会直接调用cgroup&#xff0c;自动创建容器id的目录 cpu优先级设定 测试时只保留一个cpu…...

vue3中使用better-scroll

文章目录 需求分析安装htmlcssjs 需求分析 假设现在有这么一个需求&#xff0c;页面顶部有几个tabs导航&#xff0c;每一个tab下都有一个可以滑动的切换按钮。咱们就可以引入better-scroll来实现这个需求。 安装 首先下载better-scroll npm install better-scroll/core --…...

RK3568禁用调试口改成普通口

RK3568共10个串口&#xff0c;需要用到8个串口&#xff0c;无耐其他UART都被外设复用了&#xff0c;只好将调试口也拿出来作为普通口&#xff0c;方法&#xff1a;禁用调试口、增加UART2 1. vi kernel/arch/arm64/boot/dts/rockchip/OK3568-C-linux.dts 2. #include &quo…...

腾讯云CVM服务器标准型S5、SA3、S6详细介绍

腾讯云CVM服务器标准型实例的各项性能参数平衡&#xff0c;标准型云服务器适用于大多数常规业务&#xff0c;例如&#xff1a;web网站及中间件等&#xff0c;常见的标准型云服务器有CVM标准型S5、S6、SA3、SR1、S5se等规格&#xff0c;腾讯云服务器网txyfwq.com来详细说下云服务…...

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】 1、概述2、实验环境3、 物品说明4-2、自我总结5、本次实验说明1、准备样例2、设置芯片3、编译4、下载5、验证 &#xff08;1&#xff09;windows环境下进行烧写1、下…...

什么是flink

flink的起源 Flink的起源可以追溯到2010年&#xff0c;当时它作为一个研究项目开始。该项目最初由德国柏林工业大学&#xff08;Berlin Institute of Technology&#xff09;的一群研究人员发起&#xff0c;包括Matei Zaharia、Kostas Tzoumas和Stephan Ewen等。 项目最初被称为…...

基于 VTable 的多维数据展示的原理与实践

多维表格介绍 多维表格又名透视表、交叉表、Pivot Table&#xff0c;指的是可以在行维度和列维度放入一个或多个维度&#xff0c;显示维度之间相互关系的一种表格。用户可以一目了然地分析出各种场景指标以及对比&#xff0c;旨在帮助业务分析推动决策。 假设需要分析如下表格…...

为什么有了MAC地址,还需要IP地址?

解释 搞懂这个问题&#xff0c;首先需要了解交换机的功能 交换机内部有一张MAC地址映射表&#xff0c;记录着MAC地址和端口的对应关系。 如果A要给B发送一个数据包&#xff0c;构造如下格式的数据结构&#xff1a; 到达交换机时&#xff0c;交换机内部通过自己维护的 MAC 地…...

Eclipse开发环境的安装与配置

Eclipse开发环境的安装与配置 1.Eclipse安装与配置 1.将JDK与Eclipse这两个软件安装包放在一个文件夹下&#xff0c;方便之后安装使用。 2.安装JDK 在D&#xff1a;LeStoreDownload\java文件夹下另外新建三个文件夹分别命名为java、jdk和eclipse&#xff08;分别用于Java、j…...

《006.Springboot+vue之旅游信息推荐系统》【有文档】

《006.Springbootvue之旅游信息推荐系统》【有文档】 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatis; 前台&#xff1a;vueElementUI; [2]功能模块展示&#xff1a; …...

LangChain+LLM实战---使用知识图谱和大模型来实现多跳问答

原文&#xff1a;Knowledge Graphs & LLMs: Multi-Hop Question Answering 可以使用检索增强方法来克服大型语言模型(Large Language Models, llm)的局限性&#xff0c;比如幻觉和有限的知识。检索增强方法背后的思想是在提问时引用外部数据&#xff0c;并将其提供给LLM&a…...

【实践篇】一次Paas化热部署实践分享 | 京东云技术团队

前言 本文是早些年&#xff0c;Paas化刚刚提出不久时&#xff0c;基于部门内第一次Paas化热部署落地经验所写&#xff0c;主要内容是如何构建一些热部署代码以及一些避雷经验。 一、设计-领域模型设计 1.首先&#xff0c;确定领域服务所属的领域 2.其次&#xff0c;确定垂直…...

蓝桥杯官网填空题(算式问题)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 看这个算式&#xff1a; ☆☆☆ ☆☆☆ ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字。 这个算式有多少种可能的正确填写方法&#xff1f; 173 286 459 …...

Verilog HDL语言基础知识

目录 Verilog HDL语言基础知识 6.1.2 Verilog HDL模块的结构 6.1.3 逻辑功能定义 6.2.1 常量 6.3 运算符及表达式 6.4.2 条件语句 Verilog HDL语言基础知识 先来看两个Verilog HDL程序。 例6.1 一个8位全加器的 Verilog HDL源代码 module adder8(cout,sum,ina,…...

11.1~11.2数电实验一些点+11.4~11.5报错复盘

方框写在前面是说这个数有多大&#xff0c;写在后面是说这类数有多少 前面的用于计数&#xff0c;每位无实际意义&#xff1b;后面每位都代表一个同类型的&#xff0c;即数组&#xff0c;每位有实际意义 使用四位格雷码作为深度为8的FIFO的读写指针 将格雷码转换成四位二进制…...

从电脑的角度,探究被强制删除的文件的去向和恢复方法!

当我们在进行电脑操作的时候&#xff0c;由于一些原因&#xff0c;我们可能会误操作&#xff0c;将电脑里面的某些文件强制删除掉。有的时候&#xff0c;我们误以为这些文件已经彻底消失了&#xff0c;但实际上这些被删除的文件只是被隐藏了&#xff0c;它们并没有真正离开我们…...

淘宝、天猫电商平台商品详情最低价skuid爬取、各类sku信息调取

淘宝商品描述详细信息API接口是一个用于获取淘宝商品详细信息的API&#xff0c;通过它可以获取到商品的标题、价格、图片等信息。通过淘宝商品描述详细信息API接口&#xff0c;开发者可以方便地获取宝贝的相关信息&#xff0c;并将它们用于各种应用场景中。淘宝商品描述详细信息…...