stm32h743 阿波罗v2 NetXduo http server CubeIDE+CubeMX

在这边要设置mpu的大小,要用到http server,mpu得设置的大一些

我是这么设置的,做一个参考

同样,在FLASH.ld里面也要对应修改,SECTIONS里增加.tcp_sec和 .nx_data两个区,我们用ram_d2区域去做网络,这个就是对应每个数据在d2区域的起点。


在CubeMX里,需要用到filex、dhcp和web_server,记得勾选上

然后需要把net的栈调大,最少要40*1024 


在app_filex.c里删掉MX_FileX_Init多余的部分


在netxDuo里设置,在头文件里设置静态ip,我自己设置的是192.168.8.116

 app_netxduo.c

/* USER CODE BEGIN Header */
/********************************************************************************* @file    app_netxduo.c* @author  MCD Application Team* @brief   NetXDuo applicative file******************************************************************************* @attention** Copyright (c) 2020-2021 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header *//* Includes ------------------------------------------------------------------*/
#include "app_netxduo.h"/* Private includes ----------------------------------------------------------*/
#include "nxd_dhcp_client.h"
/* USER CODE BEGIN Includes */
#include   "main.h"
#include   "nx_web_http_server.h"
#include   "app_filex.h"
/* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*/
TX_THREAD      NxAppThread;
NX_PACKET_POOL NxAppPool;
NX_IP          NetXDuoEthIpInstance;
TX_SEMAPHORE   DHCPSemaphore;
NX_DHCP        DHCPClient;
/* USER CODE BEGIN PV */
/* Define the ThreadX , NetX and FileX object control blocks. *//* Define Threadx global data structures. */
TX_THREAD AppServerThread;
TX_THREAD AppLinkThread;/* Define NetX global data structures. */NX_PACKET_POOL WebServerPool;ULONG IpAddress;
ULONG NetMask;
ULONG free_bytes;NX_WEB_HTTP_SERVER HTTPServer;/* Set nx_server_pool start address */
#if defined ( __ICCARM__ ) /* IAR Compiler */
#pragma location = ".NxServerPoolSection"
#elif defined ( __CC_ARM ) || defined(__ARMCC_VERSION) /* ARM Compiler 5/6 */
__attribute__((section(".NxServerPoolSection")))
#elif defined ( __GNUC__ ) /* GNU Compiler */
__attribute__((section(".NxServerPoolSection")))
#endif
static uint8_t nx_server_pool[SERVER_POOL_SIZE];/* Define FileX global data structures. *//* the server reads the content from the uSD, a FX_MEDIA instance is required */
FX_MEDIA                SDMedia;/* Buffer for FileX FX_MEDIA sector cache. this should be 32-Bytes aligned to avoidcache maintenance issues */
ALIGN_32BYTES (uint32_t DataBuffer[512]);/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
static VOID nx_app_thread_entry (ULONG thread_input);
static VOID ip_address_change_notify_callback(NX_IP *ip_instance, VOID *ptr);
/* USER CODE BEGIN PFP *//* HTTP server thread entry */
static void  nx_server_thread_entry(ULONG thread_input);
static VOID App_Link_Thread_Entry(ULONG thread_input);/* Server callback when a new request from a client is triggered */
static UINT webserver_request_notify_callback(NX_WEB_HTTP_SERVER *server_ptr, UINT request_type, CHAR *resource, NX_PACKET *packet_ptr);
/* USER CODE END PFP *//*** @brief  Application NetXDuo Initialization.* @param memory_ptr: memory pointer* @retval int*/
UINT MX_NetXDuo_Init(VOID *memory_ptr)
{UINT ret = NX_SUCCESS;TX_BYTE_POOL *byte_pool = (TX_BYTE_POOL*)memory_ptr;CHAR *pointer;/* USER CODE BEGIN MX_NetXDuo_MEM_POOL *//* USER CODE END MX_NetXDuo_MEM_POOL *//* USER CODE BEGIN 0 */printf("Nx_Webserver application started..\n");/* USER CODE END 0 *//* Initialize the NetXDuo system. */nx_system_initialize();/* Allocate the memory for packet_pool.  */ret = tx_byte_allocate(byte_pool, (VOID **) &pointer, NX_APP_PACKET_POOL_SIZE, TX_NO_WAIT);if (ret!= NX_SUCCESS){return TX_POOL_ERROR;}/* Create the Packet pool to be used for packet allocation,* If extra NX_PACKET are to be used the NX_APP_PACKET_POOL_SIZE should be increased*/ret = nx_packet_pool_create(&NxAppPool, "NetXDuo App Pool", DEFAULT_PAYLOAD_SIZE, pointer, NX_APP_PACKET_POOL_SIZE);if (ret != NX_SUCCESS){return NX_POOL_ERROR;}/* Allocate the memory for Ip_Instance */if (tx_byte_allocate(byte_pool, (VOID **) &pointer, Nx_IP_INSTANCE_THREAD_SIZE, TX_NO_WAIT) != TX_SUCCESS){return TX_POOL_ERROR;}/* Create the main NX_IP instance */ret = nx_ip_create(&NetXDuoEthIpInstance, "NetX Ip instance", NX_APP_DEFAULT_IP_ADDRESS, NX_APP_DEFAULT_NET_MASK, &NxAppPool, nx_stm32_eth_driver,pointer, Nx_IP_INSTANCE_THREAD_SIZE, NX_APP_INSTANCE_PRIORITY);if (ret != NX_SUCCESS){return NX_NOT_SUCCESSFUL;}/* Allocate the memory for ARP */if (tx_byte_allocate(byte_pool, (VOID **) &pointer, DEFAULT_ARP_CACHE_SIZE, TX_NO_WAIT) != TX_SUCCESS){return TX_POOL_ERROR;}/* Enable the ARP protocol and provide the ARP cache size for the IP instance *//* USER CODE BEGIN ARP_Protocol_Initialization *//* USER CODE END ARP_Protocol_Initialization */ret = nx_arp_enable(&NetXDuoEthIpInstance, (VOID *)pointer, DEFAULT_ARP_CACHE_SIZE);if (ret != NX_SUCCESS){return NX_NOT_SUCCESSFUL;}/* Enable the ICMP *//* USER CODE BEGIN ICMP_Protocol_Initialization *//* USER CODE END ICMP_Protocol_Initialization */ret = nx_icmp_enable(&NetXDuoEthIpInstance);if (ret != NX_SUCCESS){return NX_NOT_SUCCESSFUL;}/* Enable TCP Protocol *//* USER CODE BEGIN TCP_Protocol_Initialization *//* USER CODE END TCP_Protocol_Initialization */ret = nx_tcp_enable(&NetXDuoEthIpInstance);if (ret != NX_SUCCESS){return NX_NOT_SUCCESSFUL;}/* Enable the UDP protocol required for  DHCP communication *//* USER CODE BEGIN UDP_Protocol_Initialization *//* USER CODE END UDP_Protocol_Initialization */ret = nx_udp_enable(&NetXDuoEthIpInstance);if (ret != NX_SUCCESS){return NX_NOT_SUCCESSFUL;}/* Allocate the memory for main thread   */if (tx_byte_allocate(byte_pool, (VOID **) &pointer, NX_APP_THREAD_STACK_SIZE, TX_NO_WAIT) != TX_SUCCESS){return TX_POOL_ERROR;}/* Create the main thread */ret = tx_thread_create(&NxAppThread, "NetXDuo App thread", nx_app_thread_entry , 0, pointer, NX_APP_THREAD_STACK_SIZE,NX_APP_THREAD_PRIORITY, NX_APP_THREAD_PRIORITY, TX_NO_TIME_SLICE, TX_AUTO_START);if (ret != TX_SUCCESS){return TX_THREAD_ERROR;}/* Create the DHCP client *//* USER CODE BEGIN DHCP_Protocol_Initialization *//* USER CODE END DHCP_Protocol_Initialization */ret = nx_dhcp_create(&DHCPClient, &NetXDuoEthIpInstance, "DHCP Client");if (ret != NX_SUCCESS){return NX_DHCP_ERROR;}/* set DHCP notification callback  */tx_semaphore_create(&DHCPSemaphore, "DHCP Semaphore", 0);/* USER CODE BEGIN MX_NetXDuo_Init *//* Allocate the server packet pool. */ret = tx_byte_allocate(byte_pool, (VOID **) &pointer, SERVER_POOL_SIZE, TX_NO_WAIT);/* Check server packet pool memory allocation. */if (ret != NX_SUCCESS){printf("Packed pool memory allocation failed : 0x%02x\n", ret);Error_Handler();}/* Create the server packet pool. */ret = nx_packet_pool_create(&WebServerPool, "HTTP Server Packet Pool", SERVER_PACKET_SIZE, nx_server_pool, SERVER_POOL_SIZE);/* Check for server pool creation status. */if (ret != NX_SUCCESS){printf("Server pool creation failed : 0x%02x\n", ret);Error_Handler();}/* Allocate the server stack. */ret = tx_byte_allocate(byte_pool, (VOID **) &pointer, SERVER_STACK, TX_NO_WAIT);/* Check server stack memory allocation. */if (ret != NX_SUCCESS){printf("Server stack memory allocation failed : 0x%02x\n", ret);Error_Handler();}/* Create the HTTP Server. */ret = nx_web_http_server_create(&HTTPServer, "WEB HTTP Server", &NetXDuoEthIpInstance, CONNECTION_PORT,&SDMedia, pointer,SERVER_STACK, &WebServerPool, NX_NULL, webserver_request_notify_callback);if (ret != NX_SUCCESS){printf("HTTP Server creation failed: 0x%02x\n", ret);Error_Handler();}/* Allocate the TCP server thread stack. */ret = tx_byte_allocate(byte_pool, (VOID **) &pointer, 2 * DEFAULT_MEMORY_SIZE, TX_NO_WAIT);/* Check server thread memory allocation. */if (ret != NX_SUCCESS){printf("Server thread memory allocation failed : 0x%02x\n", ret);Error_Handler();}/* create the web server thread */ret = tx_thread_create(&AppServerThread, "App Server Thread", nx_server_thread_entry, 0, pointer, 2 * DEFAULT_MEMORY_SIZE,DEFAULT_PRIORITY, DEFAULT_PRIORITY, TX_NO_TIME_SLICE, TX_DONT_START);if (ret != TX_SUCCESS){return NX_NOT_ENABLED;}/* Allocate the memory for toggle green led thread  */if (tx_byte_allocate(byte_pool, (VOID **) &pointer, DEFAULT_MEMORY_SIZE, TX_NO_WAIT) != TX_SUCCESS){return TX_POOL_ERROR;}/* Allocate the memory for Link thread   */if (tx_byte_allocate(byte_pool, (VOID **) &pointer,2 *  DEFAULT_MEMORY_SIZE, TX_NO_WAIT) != TX_SUCCESS){return TX_POOL_ERROR;}/* create the Link thread */ret = tx_thread_create(&AppLinkThread, "App Link Thread", App_Link_Thread_Entry, 0, pointer, 2 * DEFAULT_MEMORY_SIZE,LINK_PRIORITY, LINK_PRIORITY, TX_NO_TIME_SLICE, TX_AUTO_START);if (ret != TX_SUCCESS){return NX_NOT_ENABLED;}/* USER CODE END MX_NetXDuo_Init */return ret;
}/**
* @brief  ip address change callback.
* @param ip_instance: NX_IP instance
* @param ptr: user data
* @retval none
*/
static VOID ip_address_change_notify_callback(NX_IP *ip_instance, VOID *ptr)
{/* USER CODE BEGIN ip_address_change_notify_callback *//* USER CODE END ip_address_change_notify_callback *//* release the semaphore as soon as an IP address is available */tx_semaphore_put(&DHCPSemaphore);
}/**
* @brief  Main thread entry.
* @param thread_input: ULONG user argument used by the thread entry
* @retval none
*/
static VOID nx_app_thread_entry (ULONG thread_input)
{/* USER CODE BEGIN Nx_App_Thread_Entry 0 *//* USER CODE END Nx_App_Thread_Entry 0 */UINT ret = NX_SUCCESS;/* USER CODE BEGIN Nx_App_Thread_Entry 1 *//* USER CODE END Nx_App_Thread_Entry 1 *//* register the IP address change callback */ret = nx_ip_address_change_notify(&NetXDuoEthIpInstance, ip_address_change_notify_callback, NULL);if (ret != NX_SUCCESS){/* USER CODE BEGIN IP address change callback error *//* Error, call error handler.*/Error_Handler();/* USER CODE END IP address change callback error */}/* start the DHCP client */ret = nx_dhcp_start(&DHCPClient);if (ret != NX_SUCCESS){/* USER CODE BEGIN DHCP client start error *//* Error, call error handler.*/Error_Handler();/* USER CODE END DHCP client start error */}/* wait until an IP address is ready */
//  if(tx_semaphore_get(&DHCPSemaphore, NX_APP_DEFAULT_TIMEOUT) != TX_SUCCESS)
//  {
//    /* USER CODE BEGIN DHCPSemaphore get error */
//
//    /* Error, call error handler.*/
//    Error_Handler();
//
//    /* USER CODE END DHCPSemaphore get error */
//  }/* USER CODE BEGIN Nx_App_Thread_Entry 2 *//* get IP address */ret = nx_ip_address_get(&NetXDuoEthIpInstance, &IpAddress, &NetMask);PRINT_IP_ADDRESS(IpAddress);if (ret != TX_SUCCESS){Error_Handler();}/* the network is correctly initialized, start the WEB server thread */tx_thread_resume(&AppServerThread);/* this thread is not needed any more, we relinquish it */tx_thread_relinquish();/* USER CODE END Nx_App_Thread_Entry 2 */}
/* USER CODE BEGIN 1 */UINT webserver_request_notify_callback(NX_WEB_HTTP_SERVER *server_ptr, UINT request_type, CHAR *resource, NX_PACKET *packet_ptr)
{CHAR temp_string[30] = {'\0'};CHAR data[512] = {'\0'};UINT string_length;NX_PACKET *resp_packet_ptr;UINT status;ULONG resumptions;ULONG suspensions;ULONG idle_returns;ULONG non_idle_returns;ULONG total_bytes_sent;ULONG total_bytes_received;ULONG connections;ULONG disconnections;/** At each new request we toggle the green led, but in a real use case this callback can serve* to trigger more advanced tasks, like starting background threads or gather system info* and append them into the web page.*//* Get the requested data from packet */if (strcmp(resource, "/GetNXData") == 0){nx_tcp_info_get(&NetXDuoEthIpInstance, NULL, &total_bytes_sent, NULL, &total_bytes_received, NULL,  NULL, NULL, &connections, &disconnections, NULL, NULL);sprintf (data, "%lu,%lu,%lu,%lu",total_bytes_received, total_bytes_sent, connections, disconnections);}else if (strcmp(resource, "/GetNetInfo") == 0){sprintf(data, "%lu.%lu.%lu.%lu,%d", (IpAddress >> 24) & 0xff, (IpAddress >> 16) & 0xff, (IpAddress >> 8) & 0xff, IpAddress& 0xff, CONNECTION_PORT);}else if (strcmp(resource, "/GetNXPacket") == 0){sprintf (data, "%lu", NxAppPool.nx_packet_pool_available);}else if (strcmp(resource, "/GetNXPacketlen") == 0){sprintf (data, "%lu", (NxAppPool.nx_packet_pool_available_list)->nx_packet_length );}else{return NX_SUCCESS;}/* Derive the client request type from the client request. */nx_web_http_server_type_get(server_ptr, server_ptr -> nx_web_http_server_request_resource, temp_string, &string_length);/* Null terminate the string. */temp_string[string_length] = '\0';/* Now build a response header with server status is OK and no additional header info. */status = nx_web_http_server_callback_generate_response_header(server_ptr, &resp_packet_ptr, NX_WEB_HTTP_STATUS_OK,strlen(data), temp_string, NX_NULL);status = _nxe_packet_data_append(resp_packet_ptr, data, strlen(data), server_ptr->nx_web_http_server_packet_pool_ptr, NX_WAIT_FOREVER);/* Now send the packet! */status = nx_web_http_server_callback_packet_send(server_ptr, resp_packet_ptr);if (status != NX_SUCCESS){nx_packet_release(resp_packet_ptr);return status;}return(NX_WEB_HTTP_CALLBACK_COMPLETED);
}/**
* @brief  Application thread for HTTP web server
* @param  thread_input : thread input
* @retval None
*/static NX_WEB_HTTP_SERVER_MIME_MAP app_mime_maps[] =
{{"css", "text/css"},{"svg", "image/svg+xml"},{"png", "image/png"},{"jpg", "image/jpg"}
};void nx_server_thread_entry(ULONG thread_input)
{/* HTTP WEB SERVER THREAD Entry */UINT    status;NX_PARAMETER_NOT_USED(thread_input);status = nx_web_http_server_mime_maps_additional_set(&HTTPServer,&app_mime_maps[0], 4);/* Start the WEB HTTP Server. */status = nx_web_http_server_start(&HTTPServer);/* Check the WEB HTTP Server starting status. */if (status != NX_SUCCESS){/* Print HTTP WEB Server starting error. */printf("HTTP WEB Server Starting Failed, error: 0x%02x\n", status);/* Error, call error handler.*/Error_Handler();}else{/* Print HTTP WEB Server Starting success. */printf("HTTP WEB Server successfully started.\n");/* LED1 On. */}
}/**
* @brief  Link thread entry
* @param thread_input: ULONG thread parameter
* @retval none
*/
static VOID App_Link_Thread_Entry(ULONG thread_input)
{ULONG actual_status;UINT linkdown = 0, status;while(1){/* Get Physical Link status. */status = nx_ip_interface_status_check(&NetXDuoEthIpInstance, 0, NX_IP_LINK_ENABLED,&actual_status, 10);if(status == NX_SUCCESS){if(linkdown == 1){linkdown = 0;status = nx_ip_interface_status_check(&NetXDuoEthIpInstance, 0, NX_IP_ADDRESS_RESOLVED,&actual_status, 10);if(status == NX_SUCCESS){/* The network cable is connected again. */printf("The network cable is connected again.\n");/* Print Webserver Client is available again. */printf("Webserver Client is available again.\n");}else{/* The network cable is connected. */printf("The network cable is connected.\n");/* Send command to Enable Nx driver. */nx_ip_driver_direct_command(&NetXDuoEthIpInstance, NX_LINK_ENABLE,&actual_status);/* Restart DHCP Client. */nx_dhcp_stop(&DHCPClient);nx_dhcp_start(&DHCPClient);}}}else{if(0 == linkdown){linkdown = 1;/* The network cable is not connected. */printf("The network cable is not connected.\n");}}tx_thread_sleep(NX_APP_CABLE_CONNECTION_CHECK_PERIOD);}
}
/* USER CODE END 1 */

app_netxduo.h

/* USER CODE BEGIN Header */
/********************************************************************************* @file    app_netxduo.h* @author  MCD Application Team* @brief   NetXDuo applicative header file******************************************************************************* @attention** Copyright (c) 2020-2021 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************/
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __APP_NETXDUO_H__
#define __APP_NETXDUO_H__#ifdef __cplusplus
extern "C" {
#endif/* Includes ------------------------------------------------------------------*/
#include "nx_api.h"/* Private includes ----------------------------------------------------------*/
#include "nx_stm32_eth_driver.h"/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET *//* USER CODE END ET *//* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC *//* USER CODE END EC */
/* The DEFAULT_PAYLOAD_SIZE should match with RxBuffLen configured via MX_ETH_Init */
#ifndef DEFAULT_PAYLOAD_SIZE
#define DEFAULT_PAYLOAD_SIZE      1536
#endif#ifndef DEFAULT_ARP_CACHE_SIZE
#define DEFAULT_ARP_CACHE_SIZE    1024
#endif/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */#define PRINT_IP_ADDRESS(addr) do { \printf("%s: %lu.%lu.%lu.%lu \n", #addr, \(addr >> 24) & 0xff, \(addr >> 16) & 0xff, \(addr >> 8) & 0xff, \addr& 0xff);\}while(0)
/* USER CODE END EM *//* Exported functions prototypes ---------------------------------------------*/
UINT MX_NetXDuo_Init(VOID *memory_ptr);/* USER CODE BEGIN EFP */
#define NX_APP_INSTANCE_PRIORITY             5
/* USER CODE END EFP *//* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* Pirority IP creation */
#define DEFAULT_MEMORY_SIZE              1024
#define DEFAULT_MAIN_PRIORITY            10
#define TOGGLE_LED_PRIORITY              15
#define DEFAULT_PRIORITY                 5
#define LINK_PRIORITY                    11/*Packet payload size */
#define PACKET_PAYLOAD_SIZE              1536
/* Packet pool size */
#define NX_PACKET_POOL_SIZE              ((1536 + sizeof(NX_PACKET)) * 50)/* APP Cache size  */
#define ARP_CACHE_SIZE                   1024/* Wait option for getting @IP */
#define WAIT_OPTION                      1000
/* Entry input for Main thread */
#define ENTRY_INPUT                      0
/* Main Thread priority */
#define THREAD_PRIO                      4
/* Main Thread preemption threshold */
#define THREAD_PREEMPT_THRESHOLD         4
/* Web application size */
#define WEB_APP_SIZE                     2048
/* Memory size */
#define MEMORY_SIZE                      2048
/* HTTP connection port */
#define CONNECTION_PORT                  80
/* Server packet size */
#define SERVER_PACKET_SIZE               (NX_WEB_HTTP_SERVER_MIN_PACKET_SIZE * 2)
/* Server stack */
#define SERVER_STACK                     4096/* Server pool size */
#define SERVER_POOL_SIZE                 (SERVER_PACKET_SIZE * 4)
/* SD Driver information pointer */
#define SD_DRIVER_INFO_POINTER           0#define NULL_IP_ADDRESS                  IP_ADDRESS(0,0,0,0)#define NX_APP_CABLE_CONNECTION_CHECK_PERIOD  (6 * NX_IP_PERIODIC_RATE)
/* USER CODE END PD */#define NX_APP_DEFAULT_TIMEOUT               (10 * NX_IP_PERIODIC_RATE)#define NX_APP_PACKET_POOL_SIZE              ((DEFAULT_PAYLOAD_SIZE + sizeof(NX_PACKET)) * 10)#define NX_APP_THREAD_STACK_SIZE             2 * 1024#define Nx_IP_INSTANCE_THREAD_SIZE           2 * 1024#define NX_APP_THREAD_PRIORITY               10#ifndef NX_APP_INSTANCE_PRIORITY
#define NX_APP_INSTANCE_PRIORITY             NX_APP_THREAD_PRIORITY
#endif#define NX_APP_DEFAULT_IP_ADDRESS                   IP_ADDRESS(192,168,8,116)#define NX_APP_DEFAULT_NET_MASK                     IP_ADDRESS(255,255,255,0)/* USER CODE BEGIN 1 *//* USER CODE END 1 */#ifdef __cplusplus
}
#endif
#endif /* __APP_NETXDUO_H__ */

编译下装运行,在这里定义了接口

 用网页访问

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

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

相关文章

生产英特尔CPU处理器繁忙的一天

早晨:准备与检查 7:00 AM - 起床与准备 工厂员工们早早起床,快速洗漱并享用早餐。为了在一天的工作中保持高效,他们会进行一些晨间锻炼,保持头脑清醒和身体活力。 8:00 AM - 到达工厂 员工们到达英特尔的半导体制造工厂&#…

电脑拼图软件有哪些?盘点7种简单好用电脑拼图软件

如今我们无时无刻不使用着社交媒体,图片已经成为我们日常生活中不可或缺的一部分。无论是社交媒体分享、工作汇报还是个人创作,拼图软件都扮演着至关重要的角色。今天,就让我们一起来盘点7款电脑拼图软件,帮助你轻松找到最适合自己…

AI应用行业落地100例 | 全国首个司法审判垂直领域AI大模型落地深圳法院

《AI应用行业落地100例》专题汇集了人工智能技术在金融、医疗、教育、制造等多个关键行业中的100个实际应用案例,深入剖析了AI如何助力行业创新、提升效率,并预测了技术发展趋势,旨在为行业决策者和创新者提供宝贵的洞察和启发。 随着人工智能…

研究突破:无矩阵乘法的LLMs 计算!

通过在推理过程中使用优化的内核,内存消耗可以比未优化模型减少超过10倍。🤯 该论文总结道,有可能创建第一个可扩展的无矩阵乘法LLM,在数十亿参数规模上实现与最先进的Transformer相媲美的性能。 另一篇最新论文《语言模型物理学…

14 学习总结:指针 · 其二 · 数组

目录 一、数组名的理解 (一)【数组名】与【&数组名[0]】 (二)区别于 【 sizeof(数组名) 】 和 【 &数组名 】 (三)总结 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二…

PlugLink的技术架构实例解析(附源码)

在探讨PlugLink这一开源应用的实际应用与技术细节时,我们可以从其构建的几个核心方面入手,结合当前AI编程的发展趋势,为您提供既有实例又有深度解析的内容。 PlugLink的技术架构实例解析 前端技术选型 —— layui框架: PlugLi…

Windows桌面上透明的记事本怎么设置

作为一名经常需要记录灵感的作家,我的Windows桌面总是布满了各种文件和窗口。在这样的环境下,一个传统的记事本应用往往会显得突兀,遮挡住我急需查看的资料。于是,我开始寻找一种既能满足记录需求,又能保持桌面整洁美观…

画了一个简陋的曼德勃罗集

原文画了一个简陋的曼德勃罗集 - 知乎 (zhihu.com) 前两天看妈咪叔科普曼德勃罗集的视频: 【分形与混沌2】最有魅力的几何图形——曼德勃罗集与朱利亚集 天使与魔鬼共存_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com/video/av79113074​编辑 虽然看过…

Dify中的工具

Dify中的工具分为内置工具(硬编码)和第三方工具(OpenAPI Swagger/ChatGPT Plugin)。工具可被Workflow(工作流)和Agent使用,当然Workflow也可被发布为工具,这样Workflow(工…

java线程锁synchronized的几种情况

一、对象方法锁 1、成员方法加锁 同一个对象成员方法有3个synchronized修饰的方法,通过睡眠模拟业务操作 public class CaseOne {public synchronized void m1(){try { TimeUnit.SECONDS.sleep(3); } catch (InterruptedException e) { e.printStackTrace()…

ChIP项目文章CMI(IF=24.1)|IRF1激活可促进辐射诱导的细胞死亡和炎症反应

2024年6月7日,四川大学张舒羽教授团队在Cellular & Molecular Immunology(IF24.1)期刊上发表了题为“Chaperone-and PTM-mediated activation of IRF1 tames radiation-induced cell death and inflammation response”的文章&#xff0c…

Flexcel学习笔记

1.引用的单元 FlexCel.Core 始终需要使用的一个单元。 多系统运行时。{$IFDEF LINUX}SKIA.FlexCel.Core{$ELSE}{$IFDEF FIREMONKEY}FMX.FlexCel.Core{ $ELSE}VCL.FlexCel.Core{$ENDIF}{$ENDIF} FlexCel.XlsAdapter这是FlexCel的xls/x引擎。如果您正在处理xls或xlsx文件&#x…

搭建邮局服务器的配置步骤?如何管理协议?

搭建邮局服务器需要考虑的安全措施?怎么搭建服务器? 在现代互联网环境中,电子邮件是重要的沟通工具。为了保证信息传递的稳定性和安全性,许多企业选择自行搭建邮局服务器。AokSend将详细介绍搭建邮局服务器的配置步骤&#xff0c…

parquet介绍

概述 Apache Parquet 是一种开源的列式数据文件格式,旨在实现高效的数据存储和检索。它提供高性能压缩和编码方案(encoding schemes)来批量处理复杂数据,并且受到许多编程语言和分析工具的支持。 parquet-format parquet-format 存储库托管 Apache Pa…

如何配置yolov10环境?

本文介绍如何快速搭建起yolov10环境,用于后续项目推理、模型训练。教程适用win、linux系统 yolo10是基于yolo8(ultralytics)的改进,环境配置跟yolo8几乎一模一样。 目录 第1章节:创建虚拟环境 第2章节:…

Tita的OKR:最新20个HR人力资源OKR案例

OKR是一个目标设定框架,可以提高员工的参与度,同时帮助人们专注于最重要的事情。 然而,OKR最大的挑战之一是设定正确的目标,我与很多人力资源专业人士交谈过,他们证明他们的OKR并不完美。 这就是为什么我们收集了最佳…

水文:CBA业务架构师

首先, 我们来了解一下什么是CBA业务架构师? CBA业务架构师认证是由业务架构师公会(Business Architecture Guild)授予的一种专业认证。标志着证书持有者已经掌握了业务架构的核心技能和知识,能够在实际工作中熟练运用业务架构技术和框架&…

Jetson-AGX-Orin 安装ROS2

Jetson-AGX-Orin 安装ROS2 确保Orin能够上网 1、安装依赖 sudo apt update sudo apt install curl gnupg2 lsb-release2、添加源 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpgecho &q…

【C++课程学习】:new和delete为什么要配套使用,new,delete和malloc,free的比较

🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🎡1.new,delete和malloc,free的区别: ⌚️相同点&…

“删错文件后如何高效挽救?两大恢复策略全解析“

在数字化日益深入生活的今天,数据已成为我们工作、学习和娱乐不可或缺的一部分。然而,删错文件的经历却如同数字世界中的一场“小插曲”,不经意间就可能让我们陷入数据丢失的困境。无论是误触删除键、清空回收站,还是软件故障导致…