库函数模块创建

工程创建

创建这个工程模版,是为了我们后面免去我们后面创建工程模版的步骤

创建这个文件,这个文件是用来存放我们编译生成的一些中间文件,C,汇编,链接的一些列表清单,调试信息,以及需要我们下载到单片机的hex文件。

再创建一个User这个是我们用户编写的文件

比如main.c,stm32的头文件和配置文件,中断文件

这个存放我们stm32的一些库,以及我们CMSIS标准的一些文件

我们的库文件可以直接在我们的固件库中提取

这些文档是我们不需要的可以直接删除

这个也不需要直接删除就行了

这个是我们F407要使用的头文件

接下来寻找启动文件

我们使用的编译器是MDK

找到这里复制粘贴进去

然后我们接着找stm32的头文件

找到Include,然后拷贝这两个文件进去

然后系统时钟的文件也是需要的

从这里拷贝进去

接下来就找配置文件

以及我们系统时钟对应的原文件

系统时钟对应的原元件在这里

然后还要拿我们的中断文件、

因为F407和F429差不多,所以我们的中断文件直接从F429里面拿就行了

main.c文件,中断文件it.c也拷贝进来

再把头文件复制进来

创建工程,然后命名不要是中文

选着F407ZGT6

编译给我们生成了列表清单什么的

这个也是保存一些中间的文件的

但是最终我们还是要把他生成在我们obj文件夹下面才行

鼠标点击target然后点击管理

在这里添加文件

点击三个方块也同样能进入这个图标

给你的文件夹改名字,然后存放·他的一些文件,这些就会好辨认

start up 是用来添加启动文件的

hal_driver是存放HAL的一些驱动文件

CMSIS的文件就放在这里面,然后启动文件也要放在这里面

User里面添加main,c 添加中断,添加时钟文件

发现这些文件都是有钥匙的

工程配置

勾选维库

不勾选的话,到时候你输出的时候就什么都没有

生成hex文件

添加宏为什么要添加呢

在我们的固件库里面他会识别你的宏有没有定义,来决定你的这些文件有没有编译

USE_HAL_DRIVER,STM32F407xx

还要添加头文件的路径,不然等一下会报错,找不到路径

JTAG的管脚更多

Debug的设置

勾选这个开发板自动复位运行

如果你不勾选的话,你就要自己按复位,不然的话就没用

添加一个ST芯片的一个算法

这样搞好后,配置就完成

编译后完后发现有错误

如果你不打开brows那么就会打不开你对应的函数

点击下面的蓝色那里就能跳到这个函数对应的地方

因为复制的F429,不是F407所以那个函数就没有定义

看这个是白的就是没有定义

没办法我们只有F407的宏,所以这时候

拷贝F407的新函数

static void SystemClock_Config(void)
{RCC_ClkInitTypeDef RCC_ClkInitStruct;RCC_OscInitTypeDef RCC_OscInitStruct;/* Enable Power Control clock */__HAL_RCC_PWR_CLK_ENABLE();/* The voltage scaling allows optimizing the power consumption when the device is clocked below the maximum system frequency, to update the voltage scaling value regarding system frequency refer to product datasheet.  */__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);/* Enable HSE Oscillator and activate PLL with HSE as source */RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM = 8;RCC_OscInitStruct.PLL.PLLN = 360;RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ = 7;if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){/* Initialization Error */Error_Handler();}if(HAL_PWREx_EnableOverDrive() != HAL_OK){/* Initialization Error */Error_Handler();}/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;  if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK){/* Initialization Error */Error_Handler();}
}
//ʱÖÓϵͳÅäÖú¯Êý
//Fvco=Fs*(plln/pllm);
//SYSCLK=Fvco/pllp=Fs*(plln/(pllm*pllp));
//Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq));//Fvco:VCOƵÂÊ
//SYSCLK:ϵͳʱÖÓƵÂÊ
//Fusb:USB,SDIO,RNGµÈµÄʱÖÓƵÂÊ
//Fs:PLLÊäÈëʱÖÓƵÂÊ,¿ÉÒÔÊÇHSI,HSEµÈ. 
//plln:Ö÷PLL±¶ÆµÏµÊý(PLL±¶Æµ),È¡Öµ·¶Î§:64~432.
//pllm:Ö÷PLLºÍÒôƵPLL·ÖƵϵÊý(PLL֮ǰµÄ·ÖƵ),È¡Öµ·¶Î§:2~63.
//pllp:ϵͳʱÖÓµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2,4,6,8.(½öÏÞÕâ4¸öÖµ!)
//pllq:USB/SDIO/Ëæ»úÊý²úÉúÆ÷µÈµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2~15.//Íⲿ¾§ÕñΪ8MµÄʱºò,ÍƼöÖµ:plln=336,pllm=8,pllp=2,pllq=7.
//µÃµ½:Fvco=8*(336/8)=336Mhz
//     SYSCLK=336/2=168Mhz
//     Fusb=336/7=48Mhz
//·µ»ØÖµ:0,³É¹¦;1,ʧ°Ü
void SystemClock_Init(u32 pllm,u32 plln,u32 pllp,u32 pllq)
{HAL_StatusTypeDef ret = HAL_OK;RCC_OscInitTypeDef RCC_OscInitStructure; RCC_ClkInitTypeDef RCC_ClkInitStructure;__HAL_RCC_PWR_CLK_ENABLE(); //ʹÄÜPWRʱÖÓ//ÏÂÃæÕâ¸öÉèÖÃÓÃÀ´ÉèÖõ÷ѹÆ÷Êä³öµçѹ¼¶±ð£¬ÒÔ±ãÔÚÆ÷¼þδÒÔ×î´óƵÂʹ¤×÷//ʱʹÐÔÄÜÓ빦ºÄʵÏÖƽºâ¡£__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//ÉèÖõ÷ѹÆ÷Êä³öµçѹ¼¶±ð1RCC_OscInitStructure.OscillatorType=RCC_OSCILLATORTYPE_HSE;    //ʱÖÓԴΪHSERCC_OscInitStructure.HSEState=RCC_HSE_ON;                      //´ò¿ªHSERCC_OscInitStructure.PLL.PLLState=RCC_PLL_ON;//´ò¿ªPLLRCC_OscInitStructure.PLL.PLLSource=RCC_PLLSOURCE_HSE;//PLLʱÖÓÔ´Ñ¡ÔñHSERCC_OscInitStructure.PLL.PLLM=pllm; //Ö÷PLLºÍÒôƵPLL·ÖƵϵÊý(PLL֮ǰµÄ·ÖƵ),È¡Öµ·¶Î§:2~63.RCC_OscInitStructure.PLL.PLLN=plln; //Ö÷PLL±¶ÆµÏµÊý(PLL±¶Æµ),È¡Öµ·¶Î§:64~432.  RCC_OscInitStructure.PLL.PLLP=pllp; //ϵͳʱÖÓµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2,4,6,8.(½öÏÞÕâ4¸öÖµ!)RCC_OscInitStructure.PLL.PLLQ=pllq; //USB/SDIO/Ëæ»úÊý²úÉúÆ÷µÈµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2~15.ret=HAL_RCC_OscConfig(&RCC_OscInitStructure);//³õʼ»¯if(ret!=HAL_OK) while(1);//Ñ¡ÖÐPLL×÷ΪϵͳʱÖÓÔ´²¢ÇÒÅäÖÃHCLK,PCLK1ºÍPCLK2RCC_ClkInitStructure.ClockType=(RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2);RCC_ClkInitStructure.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;//ÉèÖÃϵͳʱÖÓʱÖÓԴΪPLLRCC_ClkInitStructure.AHBCLKDivider=RCC_SYSCLK_DIV1;//AHB·ÖƵϵÊýΪ1RCC_ClkInitStructure.APB1CLKDivider=RCC_HCLK_DIV4; //APB1·ÖƵϵÊýΪ4RCC_ClkInitStructure.APB2CLKDivider=RCC_HCLK_DIV2; //APB2·ÖƵϵÊýΪ2ret=HAL_RCC_ClockConfig(&RCC_ClkInitStructure,FLASH_LATENCY_5);//ͬʱÉèÖÃFLASHÑÓʱÖÜÆÚΪ5WS£¬Ò²¾ÍÊÇ6¸öCPUÖÜÆÚ¡£if(ret!=HAL_OK) while(1);//STM32F405x/407x/415x/417x Z°æ±¾µÄÆ÷¼þÖ§³ÖԤȡ¹¦ÄÜif (HAL_GetREVID() == 0x1001){__HAL_FLASH_PREFETCH_BUFFER_ENABLE();  //ʹÄÜflashԤȡ}
}

因为我们是没有什么定义是u32,所以从库函数那里找就行了

定义的话就要放到main.h下面就行了

typedef int32_t  s32;
typedef int16_t s16;
typedef int8_t  s8;typedef const int32_t sc32;  
typedef const int16_t sc16;  
typedef const int8_t sc8;  typedef __IO int32_t  vs32;
typedef __IO int16_t  vs16;
typedef __IO int8_t   vs8;typedef __I int32_t vsc32;  
typedef __I int16_t vsc16; 
typedef __I int8_t vsc8;   typedef uint32_t  u32;
typedef uint16_t u16;
typedef uint8_t  u8;typedef const uint32_t uc32;  
typedef const uint16_t uc16;  
typedef const uint8_t uc8; typedef __IO uint32_t  vu32;
typedef __IO uint16_t vu16;
typedef __IO uint8_t  vu8;typedef __I uint32_t vuc32;  
typedef __I uint16_t vuc16; 
typedef __I uint8_t vuc8;

原本没参数,但是拷贝后是有的,所以要放参数进去
 

找到基础实验hal库工程模版创建,就这样复制上去就行了

这时候我们的系统时钟就是168MHZ了

因为声明没有定义,所以我们定义一下

大致搞成这样

/********************************************************************************* @file    Templates/Src/main.c * @author  MCD Application Team* @brief   Main program body******************************************************************************* @attention** <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>** Redistribution and use in source and binary forms, with or without modification,* are permitted provided that the following conditions are met:*   1. Redistributions of source code must retain the above copyright notice,*      this list of conditions and the following disclaimer.*   2. Redistributions in binary form must reproduce the above copyright notice,*      this list of conditions and the following disclaimer in the documentation*      and/or other materials provided with the distribution.*   3. Neither the name of STMicroelectronics nor the names of its contributors*      may be used to endorse or promote products derived from this software*      without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.********************************************************************************//* Includes ------------------------------------------------------------------*/
#include "main.h"//¶¨ÒåһЩ³£ÓõÄÊý¾ÝÀàÐͶ̹ؼü×Ö 
typedef int32_t  s32;
typedef int16_t s16;
typedef int8_t  s8;typedef const int32_t sc32;  
typedef const int16_t sc16;  
typedef const int8_t sc8;  typedef __IO int32_t  vs32;
typedef __IO int16_t  vs16;
typedef __IO int8_t   vs8;typedef __I int32_t vsc32;  
typedef __I int16_t vsc16; 
typedef __I int8_t vsc8;   typedef uint32_t  u32;
typedef uint16_t u16;
typedef uint8_t  u8;typedef const uint32_t uc32;  
typedef const uint16_t uc16;  
typedef const uint8_t uc8; typedef __IO uint32_t  vu32;
typedef __IO uint16_t vu16;
typedef __IO uint8_t  vu8;typedef __I uint32_t vuc32;  
typedef __I uint16_t vuc16; 
typedef __I uint8_t vuc8;
/** @addtogroup STM32F4xx_HAL_Examples* @{*/
//ʱÖÓϵͳÅäÖú¯Êý
//Fvco=Fs*(plln/pllm);
//SYSCLK=Fvco/pllp=Fs*(plln/(pllm*pllp));
//Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq));//Fvco:VCOƵÂÊ
//SYSCLK:ϵͳʱÖÓƵÂÊ
//Fusb:USB,SDIO,RNGµÈµÄʱÖÓƵÂÊ
//Fs:PLLÊäÈëʱÖÓƵÂÊ,¿ÉÒÔÊÇHSI,HSEµÈ. 
//plln:Ö÷PLL±¶ÆµÏµÊý(PLL±¶Æµ),È¡Öµ·¶Î§:64~432.
//pllm:Ö÷PLLºÍÒôƵPLL·ÖƵϵÊý(PLL֮ǰµÄ·ÖƵ),È¡Öµ·¶Î§:2~63.
//pllp:ϵͳʱÖÓµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2,4,6,8.(½öÏÞÕâ4¸öÖµ!)
//pllq:USB/SDIO/Ëæ»úÊý²úÉúÆ÷µÈµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2~15.//Íⲿ¾§ÕñΪ8MµÄʱºò,ÍƼöÖµ:plln=336,pllm=8,pllp=2,pllq=7.
//µÃµ½:Fvco=8*(336/8)=336Mhz
//     SYSCLK=336/2=168Mhz
//     Fusb=336/7=48Mhz
//·µ»ØÖµ:0,³É¹¦;1,ʧ°Ü
void SystemClock_Init(u32 pllm,u32 plln,u32 pllp,u32 pllq)
{HAL_StatusTypeDef ret = HAL_OK;RCC_OscInitTypeDef RCC_OscInitStructure; RCC_ClkInitTypeDef RCC_ClkInitStructure;__HAL_RCC_PWR_CLK_ENABLE(); //ʹÄÜPWRʱÖÓ//ÏÂÃæÕâ¸öÉèÖÃÓÃÀ´ÉèÖõ÷ѹÆ÷Êä³öµçѹ¼¶±ð£¬ÒÔ±ãÔÚÆ÷¼þδÒÔ×î´óƵÂʹ¤×÷//ʱʹÐÔÄÜÓ빦ºÄʵÏÖƽºâ¡£__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//ÉèÖõ÷ѹÆ÷Êä³öµçѹ¼¶±ð1RCC_OscInitStructure.OscillatorType=RCC_OSCILLATORTYPE_HSE;    //ʱÖÓԴΪHSERCC_OscInitStructure.HSEState=RCC_HSE_ON;                      //´ò¿ªHSERCC_OscInitStructure.PLL.PLLState=RCC_PLL_ON;//´ò¿ªPLLRCC_OscInitStructure.PLL.PLLSource=RCC_PLLSOURCE_HSE;//PLLʱÖÓÔ´Ñ¡ÔñHSERCC_OscInitStructure.PLL.PLLM=pllm; //Ö÷PLLºÍÒôƵPLL·ÖƵϵÊý(PLL֮ǰµÄ·ÖƵ),È¡Öµ·¶Î§:2~63.RCC_OscInitStructure.PLL.PLLN=plln; //Ö÷PLL±¶ÆµÏµÊý(PLL±¶Æµ),È¡Öµ·¶Î§:64~432.  RCC_OscInitStructure.PLL.PLLP=pllp; //ϵͳʱÖÓµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2,4,6,8.(½öÏÞÕâ4¸öÖµ!)RCC_OscInitStructure.PLL.PLLQ=pllq; //USB/SDIO/Ëæ»úÊý²úÉúÆ÷µÈµÄÖ÷PLL·ÖƵϵÊý(PLLÖ®ºóµÄ·ÖƵ),È¡Öµ·¶Î§:2~15.ret=HAL_RCC_OscConfig(&RCC_OscInitStructure);//³õʼ»¯if(ret!=HAL_OK) while(1);//Ñ¡ÖÐPLL×÷ΪϵͳʱÖÓÔ´²¢ÇÒÅäÖÃHCLK,PCLK1ºÍPCLK2RCC_ClkInitStructure.ClockType=(RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2);RCC_ClkInitStructure.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;//ÉèÖÃϵͳʱÖÓʱÖÓԴΪPLLRCC_ClkInitStructure.AHBCLKDivider=RCC_SYSCLK_DIV1;//AHB·ÖƵϵÊýΪ1RCC_ClkInitStructure.APB1CLKDivider=RCC_HCLK_DIV4; //APB1·ÖƵϵÊýΪ4RCC_ClkInitStructure.APB2CLKDivider=RCC_HCLK_DIV2; //APB2·ÖƵϵÊýΪ2ret=HAL_RCC_ClockConfig(&RCC_ClkInitStructure,FLASH_LATENCY_5);//ͬʱÉèÖÃFLASHÑÓʱÖÜÆÚΪ5WS£¬Ò²¾ÍÊÇ6¸öCPUÖÜÆÚ¡£if(ret!=HAL_OK) while(1);//STM32F405x/407x/415x/417x Z°æ±¾µÄÆ÷¼þÖ§³ÖԤȡ¹¦ÄÜif (HAL_GetREVID() == 0x1001){__HAL_FLASH_PREFETCH_BUFFER_ENABLE();  //ʹÄÜflashԤȡ}
}int main(void)
{HAL_Init();/* Configure the System clock to 180 MHz */
SystemClock_Init(8,336,2,7);   //ÉèÖÃʱÖÓ,168Mhz/* Add your application code here*//* Infinite loop */while (1){}
}

加上LED点灯函数测试能不能使用

如果亮灯,证明以后就能够使用这个模版了

接下来查看有没有头文件

进去main.h里面看看有没有我们F407的头文件

把main.h换成上面这个

然后main.h就不用管了

下载程序到开发板

第一种PZ-ISP

第二种ARM仿真器

KEIL常用图标功能

这个第一个仅仅只是对当前的文件进行修改

第二个对改动的文件进行编译

第三个不管你有没有改,全部都编译了,时间长,通常使用第二个

这个用来仿真器的下载的

启动文件详解

启动文件我们知道都是使用汇编代码来写的

这个文件是用来执行微控制器到main函数的执行过程

1.初始化堆栈指针

2.初始化PC指针

3.中断向量表

4.配置系统时钟

声明全局属性的一个标号

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux命令--05----find 日志

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 find1.语法语法&#xff1a;find 目标目录(路径) <选项> 参数 2.示例3.find 结合 xargs4.案例.* 模糊匹配 绝对路径 find 在 Linux 命令中&#xff0c;fin…

【Python】探索 Graphene:Python 中的 GraphQL 框架

人们常说挣多挣少都要开心&#xff0c;这话我相信&#xff0c;但是请问挣少了怎么开心&#xff1f; 随着现代 Web 应用对数据交互需求的不断增长&#xff0c;GraphQL 作为一种数据查询和操作语言&#xff0c;越来越受到开发者的青睐。Graphene 是 Python 语言中实现 GraphQL 的…

Redis面试真题总结(三)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 什么是缓存雪崩&#xff1f;该如何解决&#xff1f; 缓存雪崩是指…

Unity 高亮插件HighlightPlus介绍

主要是对官方文档进行了翻译(我做了一些补充和一些小的调整) 但是如果你只是想快速入门: Unity 高亮插件Highlight Plus快速入门-CSDN博客 注意:官方文档本身就落后实际,但对入门仍很有帮助,核心并没有较大改变,有的功能有差异,以实际为准.(目前我已校正了大部分差异,后续我…

appimage 软件创建桌面快捷图标

1、appimage 软件创建桌面快捷图标 1&#xff09;下载 AppImage 文件 首先&#xff0c;确保你已经下载了 AppImage 文件&#xff0c;并且该文件具有可执行权限。你可以通过以下命令为 AppImage 文件添加可执行权限&#xff1a; chmod x /path/to/your-app.AppImage2&#xff…

【复现】Grounding DINO使用记录

推理 问题 1. ModuleNotFoundError: No module named groundingdino 解决&#xff1a; 运行 python setup.py install 编译groundingdino库。或者直接引入环境变量&#xff1a; linux&#xff1a; export PYTHONPATH$PYTHONPATH:/data/groundingdino windows&#xff1…

hpux B.11.31 安装 JDK(详细步骤、多图预警)

目录 零、测试环境 一、获取 JDK 安装包 二、安装 JDK 1、操作指南 2、安装流程 &#xff08;1&#xff09;选中 Java JDK &#xff08;2&#xff09;&#xff08;可选&#xff09;选择安装目录 &#xff08;3&#xff09;点击安装 &#xff08;4&#xff09;&#xf…

C++门迷宫

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> using namespace std; void printmaze(const char strmaze[11][11]) {int i 0;int ia 0;for (; i < 11; i) {for (ia 0; ia <…

nvm 下载node报错:Could not retrieve https://nodejs.org/dist/index.json.

报错信息&#xff1a;Could not retrieve https://nodejs.org/dist/index.json. Get "https://nodejs.org/dist/index.json": dial tcp 104.20.23.46:443: i/o timeout 这是因为node源都是国外的服务&#xff0c;连接超时&#xff0c;所以我们把node源设置为国内的镜…

YOLOv8改进 | 自定义数据集训练 | AirNet助力YOLOv8检测

目录 一、本文介绍 二、AirNet原理介绍 2.1 对比基降解编码器&#xff08;CBDE&#xff09; 2.2 降解引导修复网络&#xff08;DGRN&#xff09; 三、yolov8与AirNet结合修改教程 3.1 核心代码文件的创建与添加 3.1.1 AirNet.py文件添加 3.1.2 __init__.py文件添加 3…

Android Studio 开发快速获取开发版和发布版SHA1和MD5

本文讲解Android Studio 开发中如何快速获取开发版和发布版SHA1和MD5。 一、获取开发版: 点击Android Studio右上角Gradle按钮,打开Gradle视图 找到项目-Tasks-signingReport 双击即可AndroidStudio底部 Run面板获取开发版SHA1和MD5 二、获取发布版:

【Python深度学习系列】基于Flask将深度学习模型部署到web应用上(完整案例)

这是我的第356篇原创文章。 一、引言 使用 Flask 在 10 分钟内将您自己训练的模型或预训练的模型&#xff08;VGG、ResNet、Densenet&#xff09;部署到网络应用程序中。以图像分类模型为例&#xff0c;本地直接部署和本地使用docker部署两种方式实现。 二、实现过程 2.1 准备…

go webapi上传文件

一、导入依赖 import "net/http" 我这里用到了Guid所以安装依赖 go get github.com/google/uuid 二、main.go package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""path/filepath&q…

深度学习的新突破:Difformer模型

人工智能咨询培训老师叶梓 转载标明出处 在现实世界中&#xff0c;数据之间的复杂相互依赖性是一个普遍存在的现象。这种错综复杂的依赖关系&#xff0c;对于传统的机器学习算法来说&#xff0c;是一个巨大的挑战。因为它们通常假设数据是独立同分布的&#xff0c;这使得算法难…

JS在线加密解密工具

快捷工具网得JS加密解密工具为您提供JS加密解密,js加解密工具,JS在线加解密,JS代码在线加解密,该工具基于eval方法的加密与解密功能&#xff0c;用户可将js代码加密成eval方法执行形式的代码&#xff0c;也可将eval方法加密过的代码进行解密操作。是一款非常简便实用的在线Java…

AC自动机详解,原理、优化分析,代码实现

零、前言 对于模式串匹配问题&#xff0c;在很多基础的数据结构课程中都有涉及到&#xff0c;如 KMP 算法&#xff0c;BM算法&#xff0c;Trie。 但是给定文本串&#xff0c;我们有多个模式串要去查询。难道要多次调用KMP / BM&#xff0c;或者在Trie上多次查询吗&#xff1f…

2024 研究生数学建模竞赛(F题)建模秘籍|X射线脉冲星光子到达时间建模|文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用轨道动力学模型&#xff0c;脉冲轮廓折叠&#xff0c;几何传播时延模型&#xff0c;相对论修正计算&#xff0c;泊松分布模拟等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量…

数据预处理方法—数据标准化和数据归一化

1.数据标准化 1.1 概念&#xff1a; 标准化是将数据转化为均值为0&#xff0c;标准差为1的分布。通过标准化处理&#xff0c;所有特征在同一个尺度上&#xff0c;使得模型更加稳定和高效&#xff0c;尤其适用于正态&#xff08;高斯&#xff09;分布的数据。 1.2 原理 标准化…

【HTTP】构造HTTP请求和状态码

状态码 用于响应中&#xff0c;表示响应的结果如何 正确&#xff1f;错误&#xff1f;什么原因&#xff1f; HTTP 中的状态码都是标准约定好的 200 OK 成功了&#xff0c;一切顺利 在抓包到的响应中 404 Not Found 访问的资源&#xff08;URL 中的路径&#xff09;没找…

【已解决】编译报错:fatal error: Eigen/Core: 没有那个文件或目录 #include <Eigen/Core>

1、如果没有安装过Eigen&#xff0c;可以使用以下git指令进行下载&#xff0c;或者也可以通过以下网址下载 git clone https://gitlab.com/libeigen/eigen.git网址1&#xff1a;https://eigen.tuxfamily.org/index.php?titleMain_Page 网址2: https://gitlab.com/libeigen/ei…