物联网||不一样的点灯实验(2)|通过使用CMSIS库函数实现点灯实验-学习笔记(12)

文章目录

  • 通过使用CMSIS库函数实现点灯实验
    • 1 如何使用CMIS库
    • 2 如何利用CMSIS库操作IO
  • 两种实现方法的比较
  • 课后作业:
    • 完整代码:
      • LED.C:
      • test.c:
      • led.h:
      • systick.h:
      • systick.c:

通过使用CMSIS库函数实现点灯实验

1 如何使用CMIS库

#####如何使用此驱动#####==============================================================================[. .](#)启用GPIO AHB时钟使用以下函数:__HAL_RCC_GPIOx_CLK_ENABLE()(#)使用HAL_GPIO_Init()配置GPIO引脚。(++)使用GPIO_InitTypeDef结构体中的“mode”成员配置IO模式(++)激活上拉,下拉电阻使用“拉”成员从GPIO_InitTypeDef结构。(++)在输出或交替功能模式选择时:速度为通过GPIO_InitTypeDef结构中的“Speed”成员配置。(++)在备用模式下为选择,备用功能连接IO通过GPIO_InitTypeDef结构中的“Alternate”成员配置。(++)当引脚用作ADC通道时,需要模拟模式或DAC输出。(++)在外部中断/事件的情况下,选择“Mode”成员从GPIO_InitTypeDef结构选择类型(中断或事件)和相应的触发事件(上升或下降或两者都有)。在外部中断/事件模式选择的情况下,配置NVIC IRQ优先级使用HAL_NVIC_SetPriority()映射到EXTI行,并使用HAL_NVIC_EnableIRQ()(#)使用HAL_GPIO_ReadPin()获取在输入模式下配置的引脚电平。(#)设置/重置在输出模式下配置的引脚的电平HAL_GPIO_WritePin () / HAL_GPIO_TogglePin()(#)锁定引脚配置直到下一次重置使用HAL_GPIO_LockPin()(#)复位期间和复位后,备用功能不存在active,且GPIO引脚配置为输入浮动模式(JTAG除外))(#) LSE振荡器引脚OSC32_IN和OSC32_OUT可作为通用器件使用(PC14和PC15),当LSE振荡器关闭时,LSE优先于GPIO功能。。(#) HSE振荡器引脚OSC_IN/OSC_OUT可用作通用PH0和PH1,当HSE振荡器关闭时。HSE优先于GPIO功能。初始化:void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)输入参数检查:/* Check the parameters */assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));assert_param(IS_GPIO_PIN(GPIO_Init->Pin));assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
类似的处理,厂家的代码更加健壮。
引用库后需要先编译一下, 才能出现头文件.h。

2 如何利用CMSIS库操作IO

根据 Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE(). 初始化需首先调用 __HAL_RCC_GPIOx_CLK_ENABLE()

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

     void LED0_Init(void){__HAL_RCC_GPIOF_CLK_ENABLE();}
提示警告:
打开stm32f4xx_hal_rcc_ex.h:
端口F的初始化宏定义:
    #define __HAL_RCC_GPIOF_CLK_ENABLE()    do { \__IO uint32_t tmpreg = 0x00U; \SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOFEN);\/* Delay after an RCC peripheral clock enabling */ \tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOFEN);\UNUSED(tmpreg); \} while(0U)

需要将头文件包含在代码中去。
在这里插入图片描述
加入初始化stm32f4xx_hal_gpio.c中的void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init),增加函数:HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
参数1为:GPIOF,参数2为: gpio_info
先定义结构体参数gpio_info:GPIO_InitTypeDef gpio_info,而GPIO_InitTypeDef的定义在:#include "stm32f4xx_hal_gpio.h"中,引入:
在这里插入图片描述

提示错误:在这里插入图片描述

取地址,根据提示增加&,解决。
开始写gpio_info的参数,取值在"stm32f4xx_hal_gpio.h"中进行了定义,直接使用宏定义的值:
在这里插入图片描述

	gpio_info.Mode = GPIO_MODE_OUTPUT_PP;

定义速度Speed,头文件中的定义为:

            /** @defgroup GPIO_speed_define  GPIO speed define* @brief GPIO Output Maximum frequency* @{*/#define  GPIO_SPEED_FREQ_LOW         0x00000000U  /*!< IO works at 2 MHz, please refer to the product datasheet */#define  GPIO_SPEED_FREQ_MEDIUM      0x00000001U  /*!< range 12,5 MHz to 50 MHz, please refer to the product datasheet */#define  GPIO_SPEED_FREQ_HIGH        0x00000002U  /*!< range 25 MHz to 100 MHz, please refer to the product datasheet  */#define  GPIO_SPEED_FREQ_VERY_HIGH   0x00000003U  /*!< range 50 MHz to 200 MHz, please refer to the product datasheet  *//*** @}*/

其他可设置的模式:

           /** @defgroup GPIO_mode_define GPIO mode define* @brief GPIO Configuration Mode*        Elements values convention: 0x00WX00YZ*           - W  : EXTI trigger detection on 3 bits*           - X  : EXTI mode (IT or Event) on 2 bits*           - Y  : Output type (Push Pull or Open Drain) on 1 bit*           - Z  : GPIO mode (Input, Output, Alternate or Analog) on 2 bits* @{*/#define  GPIO_MODE_INPUT                        MODE_INPUT                                                  /*!< Input Floating Mode                   */#define  GPIO_MODE_OUTPUT_PP                    (MODE_OUTPUT | OUTPUT_PP)                                   /*!< Output Push Pull Mode                 */#define  GPIO_MODE_OUTPUT_OD                    (MODE_OUTPUT | OUTPUT_OD)                                   /*!< Output Open Drain Mode                */#define  GPIO_MODE_AF_PP                        (MODE_AF | OUTPUT_PP)                                       /*!< Alternate Function Push Pull Mode     */#define  GPIO_MODE_AF_OD                        (MODE_AF | OUTPUT_OD)                                       /*!< Alternate Function Open Drain Mode    */#define  GPIO_MODE_ANALOG                       MODE_ANALOG                                                 /*!< Analog Mode  */#define  GPIO_MODE_IT_RISING                    (MODE_INPUT | EXTI_IT | TRIGGER_RISING)                     /*!< External Interrupt Mode with Rising edge trigger detection          */#define  GPIO_MODE_IT_FALLING                   (MODE_INPUT | EXTI_IT | TRIGGER_FALLING)                    /*!< External Interrupt Mode with Falling edge trigger detection         */#define  GPIO_MODE_IT_RISING_FALLING            (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */#define  GPIO_MODE_EVT_RISING                   (MODE_INPUT | EXTI_EVT | TRIGGER_RISING)                     /*!< External Event Mode with Rising edge trigger detection             */#define  GPIO_MODE_EVT_FALLING                  (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING)                    /*!< External Event Mode with Falling edge trigger detection            */#define  GPIO_MODE_EVT_RISING_FALLING           (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< External Event Mode with Rising/Falling edge trigger detection     *//*** @}*//** @defgroup GPIO_pull_define GPIO pull define* @brief GPIO Pull-Up or Pull-Down Activation* @{*/#define  GPIO_NOPULL        0x00000000U   /*!< No Pull-up or Pull-down activation  */#define  GPIO_PULLUP        0x00000001U   /*!< Pull-up activation                  */#define  GPIO_PULLDOWN      0x00000002U   /*!< Pull-down activation                *//*** @}*/```定义要操作的端口,gpio_info.Pin:gpio_info.Pin = GPIO_PIN_9;来源:"stm32f4xx_hal_gpio.h":```C/** @defgroup GPIO_pins_define GPIO pins define* @{*/#define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */#define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */#define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */#define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */#define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */#define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */#define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */#define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */#define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */#define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */#define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */#define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */#define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */#define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */#define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */#define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */#define GPIO_PIN_MASK              0x0000FFFFU /* PIN mask for assert test *//*** @}*/```
其他参数采用复位值即可。
配置端口为高电平,用到的函数为HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState):
GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin定义按前述变量填写。
GPIO_PinStatw定义为enmu,枚举变量,定义为:
```C
/*** @brief  GPIO Bit SET and Bit RESET enumeration*/
typedef enum
{GPIO_PIN_RESET = 0,GPIO_PIN_SET
}GPIO_PinState;
/*** @}*/

此处定义为:GPIO_PIN_SET,初始化完成后,默认为不亮的。

两种实现方法的比较

  • 更好的可移植性
  • 更好的可靠性
  • 代码占用的空间
  • 更大更好的使用性

课后作业:

1:如何写一个更加通用移植性更好的控制灯的函数
利用库函数控制:

void Led_Ctrl(GPIo_TypeDef* GPIOx,uint16_t led_pin,uint8_t ctrl)
{if(LED_ON==ctrl)HAL_GPIO_WritePin(GPIOx, led_pin, GPIO_PIN_RESET);elseHAL_GPIO_WritePin(GPIOx, led_pin, GPIO_PIN_SET);
}

重新编译工程标准库的GPIO功能的时候出现了error: #20: identifier “HAL_StatusTypeDef” is undefined问题。
在这里插入图片描述
解决方式:#include "stm32f4xx_hal.h"后,添加user目录下的test.c(有main函数即可),成功编译。在这里插入图片描述

include目录可添加指定目录:在这里插入图片描述
另外,GPIO_InitTypeDef 也可以采用指针形式,如: *p_gpio_info;

对指针的存储空间进行分配,用malloc

GPIO_InitTypeDef  *p_gpio_info; //方法2:定义指针
p_gpio_info = malloc(sizeof(GPIO_InitTypeDef));//如警告没有声明,则需要引用标准库:#include "stdlib.h"

更多的操作说明,以stm32f4xx_hal.c为例,提供了常用的硬件相关的API:
The HAL contains two APIs’ categories:
(+) Common HAL APIs
(+) Services HAL APIs
如:初始化HAL_StatusTypeDef HAL_Init(void)
主堆栈初始化:
/**

  • @brief Initialize the MSP.
  • @retval None
    */
    __weak void HAL_MspInit(void)
    延时函数:
    __weak void HAL_Delay(uint32_t Delay)
    {
    uint32_t tickstart = HAL_GetTick();
    uint32_t wait = Delay;

/* Add a freq to guarantee minimum wait */
if (wait < HAL_MAX_DELAY)
可以尝试采用。

完整代码:

LED.C:


#include "stm32f4xx_hal.h"
#include "stm32f4xx_hal_rcc.h"
#include "stm32f4xx_hal_gpio.h"
#include "stdlib.h"
#include "stm32f4xx.h"
#include "systick.h"
#include "led.h"void LED0_Init(void)
{GPIO_InitTypeDef  gpio_info;GPIO_InitTypeDef  *p_gpio_info; //方法2:定义指针p_gpio_info = malloc(sizeof(GPIO_InitTypeDef));//如警告没有声明,则需要引用标准库:#include "stdlib.h"__HAL_RCC_GPIOF_CLK_ENABLE();p_gpio_info->Pin = GPIO_PIN_10; //方法2:指针赋值p_gpio_info->Mode = GPIO_MODE_OUTPUT_PP;p_gpio_info->Speed = GPIO_SPEED_FREQ_MEDIUM;gpio_info.Pin = GPIO_PIN_9;gpio_info.Mode = GPIO_MODE_OUTPUT_PP;gpio_info.Speed = GPIO_SPEED_FREQ_MEDIUM; //其他参数采用复位值即可HAL_GPIO_Init(GPIOF, &gpio_info);//HAL_GPIO_Init(GPIOF,p_gpio_info); //方法2HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);}void LED0_On()
{HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);
}void LED0_Off()
{HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_SET);}void Led_Ctrl(GPIO_TypeDef* GPIOx,uint16_t led_pin,uint8_t ctrl)
{if(LED_ON==ctrl)HAL_GPIO_WritePin(GPIOx, led_pin, GPIO_PIN_RESET);elseHAL_GPIO_WritePin(GPIOx, led_pin, GPIO_PIN_SET);
}

test.c:

#include "systick.h"
#include "stm32f4xx.h"
#include "led.h"#define SYS_MAX_CLK 12
#define DELAY_1S    1000int main(void)
{LED0_Init();//初始化LEDOdelay_init(SYS_MAX_CLK);//初始化系统时钟while(1){/*LED0_On(); //点亮LEDOdelay_ms(1000); //延时1sLED0_Off(); //关闭LED0//delay_ms(1000); //延时1s*/Led_Ctrl(LED0_PIN_ROW, LED0_PIN, LED_ON);Led_Ctrl(LED1_PIN_ROW, LED0_PIN, LED_OFF);delay_ms(DELAY_1S); //延时1sLed_Ctrl(LED0_PIN_ROW, LED0_PIN, LED_OFF);Led_Ctrl(LED1_PIN_ROW, LED0_PIN, LED_ON);delay_ms(DELAY_1S); //延时1s}
}

led.h:

#include "stm32f4xx.h"
#include "systick.h"#ifndef __LED_H
#define __LED_H	 #define LED0_PIN_ROW GPIOF
#define LED1_PIN_ROW GPIOF#define LED0_PIN GPIO_PIN_9
#define LED1_PIN GPIO_PIN_10#define LED_ON  1
#define LED_OFF 2void LED0_Init(void);//初始化
void LED0_On(void);
void LED0_Off(void);
void Led_Ctrl(GPIO_TypeDef* GPIOx,uint16_t led_pin,uint8_t ctrl);void delay_init(u8 SYSCLK);
void delay_ms(u16 nms);
void delay_us(u32 nus);#endif

systick.h:

//摘自正点原子提供例程#ifndef __SYSTICK_H__
#define __SYSTICK_H__#include "stm32f4xx.h"typedef uint32_t  u32;
typedef uint16_t u16;
typedef uint8_t  u8;
static u8  fac_us=0;							//us延时倍乘数			   
static u16 fac_ms=0;							//ms延时倍乘数,在ucos下,代表每个节拍的ms数void delay_init(u8 SYSCLK);
void delay_us(u32 nus);
void delay_ms(u16 nms);#endif

systick.c:

#include "systick.h"//摘自正点原子提供例程
//初始化延迟函数
//当使用OS的时候,此函数会初始化OS的时钟节拍
//SYSTICK的时钟固定为HCLK时钟的1/8
//SYSCLK:系统时钟
void delay_init(u8 SYSCLK)
{
#if SYSTEM_SUPPORT_OS 						//如果需要支持OS.u32 reload;
#endifSysTick->CTRL&=~(1<<2);					//SYSTICK使用外部时钟源	 fac_us=SYSCLK/8;						//不论是否使用OS,fac_us都需要使用
#if SYSTEM_SUPPORT_OS 						//如果需要支持OS.reload=SYSCLK/8;						//每秒钟的计数次数 单位为K	   reload*=1000000/delay_ostickspersec;	//根据delay_ostickspersec设定溢出时间//reload为24位寄存器,最大值:16777216,在72M下,约合1.86s左右	fac_ms=1000/delay_ostickspersec;		//代表OS可以延时的最少单位	   SysTick->CTRL|=1<<1;   					//开启SYSTICK中断SysTick->LOAD=reload; 					//每1/delay_ostickspersec秒中断一次	SysTick->CTRL|=1<<0;   					//开启SYSTICK    
#elsefac_ms=(u16)fac_us*1000;				//非OS下,代表每个ms需要的systick时钟数   
#endif
}								    
//延时nus
//nus为要延时的us数.		    								   
void delay_us(u32 nus)
{		u32 temp;	    	 SysTick->LOAD=nus*fac_us; 				//时间加载	  		 SysTick->VAL=0x00;        				//清空计数器SysTick->CTRL=0x01 ;      				//开始倒数 	 do{temp=SysTick->CTRL;}while((temp&0x01)&&!(temp&(1<<16)));	//等待时间到达   SysTick->CTRL=0x00;      	 			//关闭计数器SysTick->VAL =0X00;       				//清空计数器	 
}
//延时nms
//注意nms的范围
//SysTick->LOAD为24位寄存器,所以,最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK单位为Hz,nms单位为ms
//对72M条件下,nms<=1864 
void delay_ms(u16 nms)
{	 		  	  u32 temp;		   SysTick->LOAD=(u32)nms*fac_ms;			//时间加载(SysTick->LOAD为24bit)SysTick->VAL =0x00;           			//清空计数器SysTick->CTRL=0x01 ;          			//开始倒数  do{temp=SysTick->CTRL;}while((temp&0x01)&&!(temp&(1<<16)));	//等待时间到达   SysTick->CTRL=0x00;      	 			//关闭计数器SysTick->VAL =0X00;       				//清空计数器	  	    
} 

2:通过本节课学习的内客,结合板上蜂呜器的电路,实现一个小型的告警系统,要求蜂鸣器周期性的响2S,停5S。使用CMSIS提供的延时函数。

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

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

相关文章

langchain-ChatGLM源码阅读:参数设置

文章目录 上下文关联对话轮数向量匹配 top k控制生成质量的参数参数设置心得 上下文关联 上下文关联相关参数&#xff1a; 知识相关度阈值score_threshold内容条数k是否启用上下文关联chunk_conent上下文最大长度chunk_size 其主要作用是在所在文档中扩展与当前query相似度较高…

RichTextBox基本用法

作用&#xff1a;富文本编辑器&#xff0c;支持多种文本展示 常用属性&#xff1a; 允许显示多行 自动换行 展示滚动条 ScrollBars属性值&#xff1a; 1、Both&#xff1a;只有当文本超过RichTextBox的宽度或长度时&#xff0c;才显示水平滚动条或垂直滚动条&#xff0c;或两…

基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、数据、讲解 &#x1f4a5;1 概述 由于能源的日益匮乏&#xff0c;电力需求的不断增长等&#xff0c;配电网中分布式能源渗透率不断提高&#xff0c;且逐渐向主动配电网方…

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台2

吃完快餐粥&#xff0c;除了粥的味道不错之外&#xff0c;我对个快餐盒的圆盖子产生了兴趣&#xff0c;能否做个极低成本的简易机器人呢&#xff1f;也许只需要二十元左右 知识点&#xff1a;轮子&#xff08;wheel&#xff09; 中国词语。是用不同材料制成的圆形滚动物体。简…

Mac端口扫描工具

端口扫描工具 Mac内置了一个网络工具 网络使用工具 按住 Command 空格 然后搜索 “网络实用工具” 或 “Network Utility” 即可 域名/ip转换Lookup ping功能 端口扫描 https://zhhll.icu/2022/Mac/端口扫描工具/ 本文由 mdnice 多平台发布

【具生智能】前沿思考与总结(DALL-E-Bot TinyBot)

1. DALL-E-Bot DALL-E-Bot: Introducing Web-Scale Diffusion Models to Robotics (robot-learning.uk) **&#xff08;2023-05-04&#xff09;**DALL-E-Bot: Introducing Web-Scale Diffusion Models to Robotics DALL-E-Bot&#xff1a;将网络规模的扩散模型引入机器人 第…

C语言----动态内存分配(malloc calloc relloc free)超全知识点

目录 一.动态内存函数 1.malloc 2.free 3.calloc 4.malloc和calloc的区别 5.realloc 二.动态内存分配的常见错误 1.对null进行解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放动态开辟内存的一部分 5.对同一块动态内存多次…

物联网|按键实验---学习I/O的输入及中断的编程|读取I/O的输入信号|中断的编程方法|轮询实现按键捕获实验-学习笔记(13)

文章目录 实验目的了解擒键的工作原理及电原理图 STM32F407中如何读取I/O的输入信号STM32F407对中断的编程方法通过轮询实现按键捕获实验如何利用已有内工程创建新工程通过轮询实现按键捕获代码实现及分析1 代码的流程分析2 代码的实现 Tips:下载错误的解决 实验目的 了解擒键…

Leetcode-每日一题【剑指 Offer 09. 用两个栈实现队列】

题目 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例 1&#xff1a; 输入&#xff1a; [&…

springboot第34集:ES 搜索,nginx

#用search after解决深分页性能问题 #第一页 GET /bank/_search {"size": 10,"sort": [{"account_number": {"order": "asc"}}] }#第二页 GET /bank/_search {"size": 10,"sort": [{"account_numb…

【WEB逆向】前端全报文加密的分析技巧

由于前端全报文加密&#xff0c;无法从变量的全文搜索来快速定位加密函数对加密参数的定位&#xff08;全局搜索还有个弊病是编码混淆的js也不能全局搜到&#xff0c;需要进一步分析判定混淆的编码形式后再全局搜编码后的变量名&#xff09;&#xff0c;因此可利用xhr断点全局拦…

LLM reasoners 入门实验 24点游戏

LLM reasoners Ber666/llm-reasoners 实验过程 实验样例24games&#xff0c;examples/tot_game24&#xff0c;在inference.py中配置使用代理和open ai的api key。 首先安装依赖 git clone https://github.com/Ber666/llm-reasoners cd llm-reasoners pip install -e .然后…

【雕爷学编程】Arduino动手做(187)---1.3寸OLED液晶屏模块2

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

Spring Security OAuth2.0(7):自定义认证连接数据库

自定义认证连接数据库 首先创建数据库和用户表 CREATE TABLE t_user (id bigint(20) NOT NULL AUTO_INCREMENT,username varchar(64) DEFAULT NULL,password varchar(64) DEFAULT NULL,fullname varchar(255) DEFAULT NULL,mobile varchar(20) DEFAULT NULL,PRIMARY KEY (id)…

MacOS使用brew如何下载Nginx

首先&#xff0c;第一步切换源&#xff1a; 切换 brew.git 仓库地址&#xff1a; cd "$(brew --repo)" git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git 替换 homebrew-core.git 仓库地址: cd "$(brew --repo)/Library/Taps/home…

LabVIEW 开发在不确定路况下自动速度辅助系统

LabVIEW 开发在不确定路况下自动速度辅助系统 智能驾驶辅助系统是汽车行业最先进的升级和尖端技术&#xff0c;智能交通系统依靠智能驾驶辅助系统在公共交通部门工作。该智能驾驶辅助系统技术包括自适应巡航控制&#xff0c;防抱死制动系统&#xff0c;安全气囊展开&#xff0…

【机器学习】编码、创造和筛选特征

在机器学习和数据科学领域中&#xff0c;特征工程是提取、转换和选择原始数据以创建更具信息价值的特征的过程。假设拿到一份数据集之后&#xff0c;如何逐步完成特征工程呢&#xff1f; 文章目录 一、特性类型分析1.1 数值型特征1.2 类别型特征1.3 时间型特征1.4 文本型特征1.…

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection - 密集目标检测中的焦点损失&#xff08;arXiv 2018&#xff09; 摘要1. 引言2. 相关工作References 声明&#xff1a;此翻译仅为个人学习记录 文章信息 标题&#xff1a;RetinaNet: Focal Loss for Dense Obje…

CentOS 搭建 Harbor 镜像仓库(图文详解)

本文目录 1. 下载 Harbor 安装包2. 解压3. 修改配置文件4. 安装 Harbor5. 修改 docker 配置6. docker 登录方式7. 访问 Harbor Web 界面8. 创建证书9. 生成证书10. 更新配置11. 网页登录 说明&#xff1a;在搭建 Harbor 镜像仓库之前&#xff0c;虚拟机要先安装 docker 和 dock…

数据安全治理5大关键技术实践分享

近年来&#xff0c;国内外对数据安全的重视程度持续提升&#xff0c;数据安全技术领域发展备受关注。从2017-2021年Gartner发布的“数据安全技术成熟度曲线”研究报告来看&#xff0c; 新兴数据安全技术呈逐年递增趋势&#xff0c;其中安全多方计算、同态加密、差分隐私等隐私增…