APM32芯得EP.49|探索使用以太网(ETH),搭建一个简单的本地HTTP服务器

极海Geehy 2024-12-23 18:01


《APM32芯得》系列内容为用户使用APM32系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。




最近在学习 ETH 模块,ETH 模块具有 HTTP 服务的功能,我将在本帖中探讨如何使用 HTTP 服务搭建一个本地 Web网站,并分享一些我所获得的经验。


1. HTTP介绍:

HTTP是超文本传输协议(Hypertext Transfer Protocol)的缩写,它是用于传输超文本(如 HTML)数据的应用层协议。HTTP是万维网上数据通信的基础,它被用于在Web浏览器和Web服务器之间传输信息。


HTTP是一个无状态协议,这意味着每个单独的请求都是独立的,服务器不会在多个请求之间保留任何数据。每个HTTP请求从客户端(例如Web浏览器)发送到服务器,然后服务器返回一个响应。这种请求-响应模型使得客户端可以从服务器获取各种信息,如网页、图像、视频等。


HTTP通常使用TCP作为其传输层协议,通过使用标准端口号80进行通信(HTTPS使用端口号443)。近年来,随着对安全性的需求增加,基于HTTP的加密版本HTTPS也变得越来越普遍,它通过使用SSL/TLS协议来加密数据传输,确保数据的机密性和完整性。


HTTP服务特点:

HTTP服务具有以下几个主要特点:


1. 无连接:HTTP是一种无连接的协议,即每个请求和响应之间都是独立的,服务器不会保留关于客户端的任何状态信息。这种无连接的特性使得服务器能够更有效地处理大量的并发请求。

2. 无状态:HTTP是一种无状态的协议,即服务器不会在请求之间保留任何状态信息。每个请求都是独立的,服务器不会记住之前的请求信息。这种设计简化了服务器的管理和维护,但也意味着服务器无法跟踪客户端的状态,需要使用其他机制来实现状态管理,如使用Cookies或Session。

3. 简单灵活:HTTP的设计简单且灵活,易于实现和使用。它使用文本格式的请求和响应消息,易于调试和理解。同时,HTTP也支持多种不同的请求方法(如GET、POST、PUT、DELETE等),以及多种不同的内容类型(如文本、图像、音频、视频等),使得其适用于各种不同的应用场景。

4. 基于请求-响应模型:HTTP是基于请求-响应模型的协议,即客户端发送一个请求给服务器,服务器处理请求并返回一个响应给客户端。这种模型使得客户端能够从服务器获取各种信息,如网页、图像、视频等。

5. 支持多媒体内容:HTTP不仅可以传输文本数据(如HTML),还可以传输图像、视频、音频等多媒体内容。这使得互联网上的各种资源可以通过HTTP服务进行传输和访问。

6. 基于TCP协议:HTTP通常使用TCP作为其传输层协议,通过使用标准端口号80进行通信(HTTPS使用端口号443)。TCP协议提供了可靠的数据传输机制,确保数据的可靠性和完整性。

综上所述,HTTP服务具有无连接、无状态、简单灵活等特点,适用于各种不同的应用场景,是互联网上数据通信的基础。


LWIP1.4.1的HTTP服务介绍


lwIP(lightweight IP)是一个轻量级的开源TCP/IP协议栈,用于嵌入式系统和小型设备。lwIP1.4.1版本中包含了一个简单的HTTP服务器,可以用于在嵌入式设备上搭建基本的Web服务器。

lwIP1.4.1版本的HTTP服务器具有以下特点:

1.轻量级:lwIP是一个轻量级的TCP/IP协议栈,适用于资源受限的嵌入式系统和小型设备。其HTTP服务器也是精简设计,适合在资源有限的环境下运行。

2.基于C语言:lwIP的HTTP服务器是用C语言编写的,易于移植和集成到各种嵌入式系统中。

3.支持基本功能:lwIP的HTTP服务器支持基本的HTTP功能,如处理GET请求、发送静态内容(如HTML页面、图像等)、处理简单的动态内容等。

4.定制化:虽然lwIP的HTTP服务器功能相对简单,但可以根据需要进行定制和扩展,以满足特定应用场景的需求。

5.适用性:lwIP的HTTP服务器适用于嵌入式设备上需要提供简单Web服务的场景,如远程监控、配置管理、固件升级等。

总的来说,lwIP1.4.1版本的HTTP服务器是一个简单而实用的工具,适合在资源受限的嵌入式系统中搭建基本的Web服务器功能。


2. 本地 Web 服务器搭建的步骤

1.新建工程,移植lwip库,并包含其所需要的组件。


2.准备一些html文件,用于界面显示和控制。


3. 使用makefsdata将html 文件转化为c语言数组形式。(附件含 makefsdata工具)

首先打开makefsdata目录,新建fs文件夹。

把准备好的文件复制到fs文件夹中。

退回上一级目录,即makefsdata根目录下,打开cmd,输入“makefsdata“,即可把fs文件夹中的html文件转化为fsdata.c文件,该文件包含了其转化后的c语言数组。

生成的 fsdata.c 文件,就是我们需要的源文件。

这样我们的基础文件数据就准备好了。


4. 编写httpd_cgi_ssi.c文件

HTTP的SSI和CGI介绍:


当涉及到 Web 服务器上的动态内容处理时,两种常见的方法是Server Side Includes (SSI) 和 Common Gateway Interface(CGI)。


### 1. Server Side Includes (SSI):

SSI 是一种简单的动态内容生成技术,它允许在 HTML 页面中嵌入动态内容。SSI 在 HTML 文件中通过特殊的标签实现,服务器在响应客户端请求时动态地处理这些标签。


#### 如何使用SSI:

- SSI 标签通常以 结束。

- 常见的SSI指令包括:

- #include:包含其他文件的内容。

- #echo:输出环境变量或者其他值。

- #exec:执行外部命令并将结果输出。

- SSI 通常在服务器配置中启用,并且需要指定哪些文件扩展名应该被解析为SSI。


#### 优点:

- 简单易用,无需编写额外的代码。

- 可以直接在 HTML 文件中嵌入动态内容,方便快捷。


#### 缺点:

- 功能有限,主要用于简单的动态内容生成。

- 对服务器性能有一定影响,因为需要在每个请求中动态解析处理SSI标签。


### 2. Common Gateway Interface (CGI):

CGI 是一种更为灵活和强大的动态内容生成技术。它允许服务器调用外部程序来处理客户端请求,并生成动态内容。CGI程序可以用任何编程语言编写,只要能够通过标准输入和输出与 Web 服务器通信即可。


#### 如何使用CGI:

- CGI 程序通常位于 Web 服务器的特定目录中(如`cgi-bin` 目录)。

- 当服务器收到客户端请求时,会调用相应的 CGI 程序来处理请求,并将结果返回给客户端。

- CGI 程序通过环境变量获取客户端请求信息,并通过标准输出返回动态生成的内容。


#### 优点:

- 灵活多样,可以使用各种编程语言编写CGI 程序。

- 可以处理复杂的动态内容生成需求,如表单处理、数据库查询等。


#### 缺点:

- 比较复杂,需要编写额外的程序。

- 对服务器性能影响较大,每个 CGI请求都需要启动一个新的进程来处理。

综上所述,SSI 适用于简单的动态内容生成需求,而CGI 则更适合处理复杂的动态内容生成任务。选择哪种方法取决于具体的需求和服务器环境。

在了解这些之后,我们看看下面编写的httpd_cgi_ssi.c文件源码。


#include "lwip/debug.h"

#include "httpd.h"

#include "lwip/tcp.h"

#include "fs.h"

#include "main.h"

#include "Board.h"

#include

#include

tSSIHandler ADC_Page_SSI_Handler;

uint32_t ADC_not_configured=1;

/* we will use character "t" as tag for CGI */

char const* TAGCHAR="t";

char const** TAGS=&TAGCHAR;

/* CGI handler for LED control */

const char * LEDS_CGI_Handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[]);

/* Html request for "/leds.cgi" will start LEDS_CGI_Handler */

const tCGI LEDS_CGI={"/leds.cgi", LEDS_CGI_Handler};

/* Cgi call table, only one CGI used */

tCGI CGI_TAB[1];

/**

* [url=home.php?mod=space&uid=247401]@brief[/url]  Configures the ADC.

* @param None

* @retval None

*/

static void ADC_Configuration(void)

{

ADC_Config_T adcConfig;

ADC_CommonConfig_T adcCommonConfig;

GPIO_Config_T gpioConfig;

RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_ADC3);

RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOF);

gpioConfig.pin = GPIO_PIN_9;

gpioConfig.mode = GPIO_MODE_AN;

gpioConfig.pupd = GPIO_PUPD_NOPULL;

GPIO_Config(GPIOF,&gpioConfig);

ADC_CommonConfigStructInit(&adcCommonConfig);

adcCommonConfig.mode = ADC_MODE_INDEPENDENT;

adcCommonConfig.prescaler = ADC_PRESCALER_DIV6;

adcCommonConfig.accessMode = ADC_ACCESS_MODE_DISABLED;

adcCommonConfig.twoSampling = ADC_TWO_SAMPLING_5CYCLES;

ADC_CommonConfig(&adcCommonConfig);

ADC_ConfigStructInit(&adcConfig);

adcConfig.resolution = ADC_RESOLUTION_12BIT;

adcConfig.scanConvMode = DISABLE;

adcConfig.continuousConvMode = ENABLE;

adcConfig.extTrigEdge = ADC_EXT_TRIG_EDGE_NONE;

adcConfig.dataAlign = ADC_DATA_ALIGN_RIGHT;

adcConfig.nbrOfChannel = 1;

ADC_Config(ADC3,&adcConfig);

ADC_ConfigRegularChannel(ADC3,ADC_CHANNEL_7,1,ADC_SAMPLETIME_56CYCLES);

ADC_Enable(ADC3);

/* ADC3 regular Software Start Conv */

ADC_SoftwareStartConv(ADC3);

}

/**

* [url=home.php?mod=space&uid=247401]@brief[/url]  ADC_Handler : SSI handler for ADC page

*/

u16_t ADC_Handler(int iIndex, char *pcInsert, int iInsertLen)

{

/* We have only one SSI handler iIndex = 0 */

if (iIndex ==0)

char Digit1=0, Digit2=0, Digit3=0, Digit4=0;

uint32_t ADCVal = 0;

/* configure ADC if not yet configured */

if (ADC_not_configured ==1)  

{

ADC_Configuration();

ADC_not_configured=0;

}

/* get ADC conversion value */

ADCVal = ADC_ReadConversionValue(ADC3);

/* convert to Voltage,  step = 0.8 mV */

ADCVal = (uint32_t)(ADCVal * 0.8); 

printf("ADC Value: %d\r\n",ADCVal);

/* get digits to display */

Digit1= ADCVal/1000;

Digit2= (ADCVal-(Digit1*1000))/100 ;

Digit3= (ADCVal-((Digit1*1000)+(Digit2*100)))/10;

Digit4= ADCVal -((Digit1*1000)+(Digit2*100)+ (Digit3*10));

/* prepare data to be inserted in html */

*pcInsert  = (char)(Digit1+0x30);

*(pcInsert + 1) = (char)(Digit2+0x30);

*(pcInsert + 2) = (char)(Digit3+0x30);

*(pcInsert + 3) = (char)(Digit4+0x30);

/* 4 characters need to be inserted in html*/

return 4;

}

return 0;

}

/**

* [url=home.php?mod=space&uid=247401]@brief[/url]  CGI handler for LEDs control

*/

const char * LEDS_CGI_Handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])

{

uint32_t i=0;

/* We have only one SSI handler iIndex = 0 */

if (iIndex==0)

{

/* All leds off */

APM_TINY_LEDOff(LED2);

APM_TINY_LEDOff(LED3);

/* Check cgi parameter : example GET /leds.cgi?led=2&led=4 */

for (i=0; i

{

/* check parameter "led" */

if (strcmp(pcParam[i] , "led")==0)  

{

/* switch led2 ON if 2 */

if(strcmp(pcValue[i], "2") ==0)

APM_TINY_LEDOn(LED2);

/* switch led3 ON if 3 */

else if(strcmp(pcValue[i], "3") ==0)

APM_TINY_LEDOn(LED3);

}

}

}

/* uri to send after cgi call*/

return "/APM32F407LED.html"; 

}

/**

* Initialize SSI handlers

*/

void httpd_ssi_init(void)

{

/* configure SSI handlers (ADC page SSI) */

http_set_ssi_handler(ADC_Handler, (char const **)TAGS, 1);

}

/**

* Initialize CGI handlers

*/

void httpd_cgi_init(void)

{

/* configure CGI handlers (LEDs control CGI) */

CGI_TAB[0] = LEDS_CGI;

http_set_cgi_handlers(CGI_TAB, 1);

}


这段代码是一个基于lwIP(LightweightIP)的HTTP服务器的实现,它允许通过网页控制单片机上的LED,并且能够实时获取ADC(模数转换器)的值并显示在网页上。让我们逐个分析每个函数及其功能:


- ADC_Configuration():

 - 这个函数配置了微控制器的ADC模块,使其准备好进行模拟信号的数字化转换。

 - 配置了ADC3通道7,并启动了ADC转换。


-ADC_Handler():

 - 这个函数是SSI(Server Side Include)的处理函数,用于处理ADC页面的SSI标签。

 - 它读取ADC转换的值,将其转换为电压值,并将其插入到HTML页面的指定位置。

 - 该函数返回要插入的字符数量。


-LEDS_CGI_Handler():

 - 这个函数是CGI(Common Gateway Interface)的处理函数,用于处理LED控制的CGI请求。

 - 它检查CGI参数,根据参数设置LED的状态(开或关)。

 - 返回一个字符串,指示CGI调用完成后应该跳转的页面。


- httpd_ssi_init():

 - 这个函数初始化SSI处理程序,将ADC页面的SSI处理函数注册到HTTP服务器。


-httpd_cgi_init():

 - 这个函数初始化CGI处理程序,将LED控制的CGI处理函数注册到HTTP服务器。


总体来说,这段代码实现了一个基本的HTTP服务器,可以通过网页界面控制LED,并实时显示ADC转换的值。通过SSI和CGI,可以动态地生成网页内容,并实现与单片机硬件的交互。


5.编写main函数


int main(void)

{

char LCDDisplayBuf[100] = {0};

struct ip_addr DestIPaddr;

uint8_t flag = 0;

USART_Config_T usartConfig;

/* User config the different system Clock */

UserRCMClockConfig();

/* Configure SysTick */

ConfigSysTick();

/* Configure USART */

usartConfig.baudRate = 115200;

usartConfig.wordLength = USART_WORD_LEN_8B;

usartConfig.stopBits = USART_STOP_BIT_1;

usartConfig.parity = USART_PARITY_NONE ;

usartConfig.mode = USART_MODE_TX_RX;

usartConfig.hardwareFlow = USART_HARDWARE_FLOW_NONE;

APM_BOARD_COMInit(COM1,&usartConfig);

/* Configures LED2 and LED3 */

APM_BOARD_LEDInit(LED2);

APM_BOARD_LEDInit(LED3);

/* KEY init*/

APM_BOARD_PBInit(BUTTON_KEY1, BUTTON_MODE_GPIO);

APM_BOARD_PBInit(BUTTON_KEY2, BUTTON_MODE_GPIO);

printf("This is a Demo!\r\n");

/* Configure ethernet (GPIOs, clocks, MAC, DMA) */

ConfigEthernet();

/* Initilaize the LwIP stack */

LwIP_Init();

httpd_init();

/* Use Com printf static IP address*/

sprintf(LCDDisplayBuf,"TINY board Static IP address \r\n");

printf("%s",LCDDisplayBuf);

sprintf(LCDDisplayBuf,"IP: %d.%d.%d.%d \r\n",

IP_ADDR0,

IP_ADDR1,

IP_ADDR2,

IP_ADDR3);

printf("%s",LCDDisplayBuf);

sprintf(LCDDisplayBuf,"NETMASK: %d.%d.%d.%d \r\n",

NETMASK_ADDR0,

NETMASK_ADDR1,

NETMASK_ADDR2,

NETMASK_ADDR3);

printf("%s",LCDDisplayBuf);

sprintf(LCDDisplayBuf,"Gateway: %d.%d.%d.%d \r\n",

GW_ADDR0,

GW_ADDR1,

GW_ADDR2,

GW_ADDR3);

printf("%s",LCDDisplayBuf);

while(1)

{

/* check if any packet received */

if (ETH_CheckReceivedFrame())

{

/* process received ethernet packet */

LwIP_Pkt_Handle();

}

/* handle periodic timers for LwIP */

LwIP_Periodic_Handle(ETHTimer);

}

}


6.配置开发板静态IP地址


3. 实验现象:

1.用以太网接口线,连接开发板与PC端,打开浏览器,输入开发板的IP地址,进入网页端。


2.在网页端点击Led control,跳转到led控制界面。


3.点击ADC StatusBar,跳转到ADC采集界面。


注:文章作者在原帖中提供了例程文件,有需要请至原文21ic论坛下载


原文地址:https://bbs.21ic.com/icview-3364404-1-1.html

或点击下方 阅读原文 跳转


↑↑↑ 点击上方卡片关注极海 ↑↑↑

极海Geehy 极海半导体是一家致力于开发工业级/车规级MCU、模拟与混合信号IC及系统级芯片的集成电路设计型企业
评论 (0)
  •   北京华盛恒辉基于GIS的电磁态势可视化系统软件是将地理空间信息与电磁态势数据相结合,通过图形化手段直观展示电磁环境态势的系统。这类软件在军事、通信、无线电管理等领域具有广泛应用,能够辅助用户进行电磁频谱分析、干扰监测、态势研判和决策支持。以下是关于此类系统的详细介绍:   应用案例   目前,已有多个电磁态势可视化系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁态势可视化系统。这些成功案例为电磁态势可视化系统的推广和应用提供了有力支持。   一、系统功能   电磁
    华盛恒辉l58ll334744 2025-04-22 11:44 94浏览
  •   电磁兼容(EMC)故障诊断系统软件解析   北京华盛恒辉电磁兼容故障诊断系统软件是攻克电子设备电磁干扰难题的专业利器。在电子设备复杂度攀升、电磁兼容问题频发的背景下,该软件于研发、测试、生产全流程中占据关键地位。以下为其详细介绍:   应用案例   目前,已有多个电磁兼容故障诊断系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁兼容故障诊断系统。这些成功案例为电磁兼容故障诊断系统的推广和应用提供了有力支持。   一、软件核心功能   干扰与敏感分析:深度剖析电磁干
    华盛恒辉l58ll334744 2025-04-22 14:53 121浏览
  •   电磁兼容故障诊断系统平台深度解析   北京华盛恒辉电磁兼容(EMC)故障诊断系统平台是解决电子设备在复杂电磁环境下性能异常的核心工具。随着电子设备集成度提升与电磁环境复杂化,EMC 问题直接影响设备可靠性与安全性。以下从平台架构、核心功能、技术实现、应用场景及发展趋势展开全面剖析。   应用案例   目前,已有多个电磁兼容故障诊断系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁兼容故障诊断系统。这些成功案例为电磁兼容故障诊断系统的推广和应用提供了有力支持。  
    华盛恒辉l58ll334744 2025-04-22 14:29 144浏览
  • 在汽车行业的变革浪潮中,智界汽车的诞生备受瞩目。作为华为与奇瑞两大巨头携手合作的结晶,智界汽车自孕育之初便承载着众人的期待,被视为融合前沿科技与卓越制造的典范,有望在竞争激烈的新能源汽车市场中开辟出一片新天地。2024年,智界品牌首款车型智界S7正式上市,凭借华为的技术赋能,如先进的鸿蒙智能座舱、强大的HUAWEI ADS高阶智能驾驶辅助系统,以及奇瑞多年积累的深厚造车底蕴,在上市前赚足了眼球。智界S7的亮相,犹如一颗投入平静湖面的石子,激起了层层涟漪,消费者对其充满了好奇与期待,行业内也纷纷将
    用户1742991715177 2025-04-21 20:28 107浏览
  • 据国际精益六西格玛研究所(ILSSI)成员大卫·哈钦斯(David Hutchins)的回忆,在“六西格玛”名称出现前,摩托罗拉组建了约100个质量改进团队,接受朱兰博士制作的16盘录像带培训,名为《朱兰论质量改进》(Juran on Quality Improvement),为了推广这种严谨的分析方法(朱兰博士视频中的核心内容),摩托罗拉前首席执行官鲍勃·加尔文创造了“六西格玛”这一标签,用以表彰这种“最顶尖"的方法。大卫·哈钦斯(David Hutchins)是朱兰博士的好友,也为他的工作做
    优思学院 2025-04-22 12:03 102浏览
  •   卫星通信效能评估系统平台全面解析   北京华盛恒辉卫星通信效能评估系统平台是衡量卫星通信系统性能、优化资源配置、保障通信服务质量的关键技术工具。随着卫星通信技术的快速发展,特别是低轨卫星星座、高通量卫星和软件定义卫星的广泛应用,效能评估系统平台的重要性日益凸显。以下从技术架构、评估指标、关键技术、应用场景及发展趋势五个维度进行全面解析。   应用案例   目前,已有多个卫星通信效能评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润卫星通信效能评估系统。这些成功案例为卫
    华盛恒辉l58ll334744 2025-04-22 16:34 110浏览
  •   北京华盛恒辉机场保障能力评估系统软件深度解析   在航空运输业快速发展的背景下,机场保障任务愈发复杂,传统人工评估方式已无法满足高效精准的管理需求。机场保障能力评估系统软件作为提升机场运行效率、保障飞行安全的关键工具,其重要性日益凸显。   应用案例   目前,已有多个机场保障能力评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润机场保障能力评估系统。这些成功案例为机场保障能力评估系统的推广和应用提供了有力支持。   一、系统功能模块   数据采集与整合模块  
    华盛恒辉l58ll334744 2025-04-22 10:28 119浏览
  • 引言:工业安全与智能化需求的双重驱动在工业安全、环境保护及家庭安防领域,气体泄漏引发的安全事故始终是重大隐患。随着传感器技术、物联网及语音交互的快速发展,气体检测报警器正朝着智能化、低成本、高可靠的方向演进。WT588F02B-8S语音芯片,以“离在线语音更换+多协议通信”为核心优势,为气体检测报警器提供了一套高效、灵活的低成本语音解决方案,助力开发者快速响应市场需求。产品功能与市场需求1. 核心功能:从监测到预警的全流程覆盖实时气体监测:支持一氧化碳、臭氧、硫化氢等多种气体浓度检测,精度可达p
    广州唯创电子 2025-04-22 09:14 92浏览
  •   电磁干扰抑制系统平台深度解析   一、系统概述   北京华盛恒辉电磁干扰抑制系统在电子技术快速发展、电磁环境愈发复杂的背景下,电磁干扰(EMI)严重影响电子设备性能、稳定性与安全性。电磁干扰抑制系统平台作为综合性解决方案,通过整合多元技术手段,实现对电磁干扰的高效抑制,确保电子设备稳定运行。   应用案例   目前,已有多个电磁干扰抑制系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁干扰抑制系统。这些成功案例为电磁干扰抑制系统的推广和应用提供了有力支持。   二
    华盛恒辉l58ll334744 2025-04-22 15:27 136浏览
  • 引言:老龄化社会的健康守护需求随着全球老龄化进程加速,老年人的健康管理与生活质量成为社会焦点。记忆衰退、用药混乱、日程遗漏等问题频发,催生了智能健康设备的市场需求。WTR096录音语音芯片,凭借其高度集成的录放音、计时时钟与计划管理功能,为老年人量身打造了一站式健康管理方案,重新定义智能语音时钟的价值。功能亮点:1. 用药安全守护:多维度提醒,拒绝遗忘多时段精准提醒:支持一天内设置多个用药时间(如早、中、晚),适配复杂用药需求。个性化语音定制:家属可录制专属提醒语音(如“上午9点,请服用降压药”
    广州唯创电子 2025-04-22 08:41 107浏览
  • 在消费金融的赛道上,马上消费曾是备受瞩目的明星企业。自2015年成立以来,它以年均 30% 的净利润增速一路狂奔,成为持牌消费金融公司的标杆,2023年更是斩获19.82亿元净利润,风光无限。然而,2024年却成了马上消费的一道分水岭。2024年上半年,其营收为77.38亿元,同比下降2.11%;净利润更是同比骤降20.66%,仅为10.68亿元,创下历史最大跌幅 。与此同时,不良贷款率攀升至2.5%,不良余额高达16.54亿元,核心资本充足率降至12.72%,融资
    用户1742991715177 2025-04-21 21:29 123浏览
  • 近期,金融界消息称,江西万年芯微电子有限公司申请一项名为“基于预真空腔体注塑的芯片塑封方法及芯片”的专利。此项创新工艺的申请,标志着万年芯在高端芯片封装领域取得重要突破,为半导体产业链提升注入了新动能。专利摘要显示,本发明公开了一种基于预真空腔体注塑的芯片塑封方法,方法包括将待塑封的大尺寸芯片平铺于下模盒腔体内的基板并将大尺寸芯片的背向表面直接放置于基板上以进行基板吸附;将上模盒盖合于下模盒形成塑封腔,根据基板将塑封腔分为上型腔以及下型腔;将下型腔内壁与大尺寸芯片间的空隙进行树脂填充;通过设置于
    万年芯 2025-04-22 13:28 86浏览
  • 4 月 19 日,“增长无界・智领未来” 第十六届牛商大会暨电子商务十大牛商成果报告会在深圳凤凰大厦盛大举行。河南业之峰科技股份有限公司总经理段利强——誉峰变频器强哥凭借在变频器领域的卓越成就,荣膺第十六届电子商务十大牛商,携誉峰变频器品牌惊艳亮相,以十几年如一日的深耕与创新,书写着行业传奇。图 1:誉峰变频器强哥在牛商大会领奖现场,荣耀时刻定格牛商大会现场,誉峰变频器强哥接受了多家媒体的专访。面对镜头,他从容分享了自己在变频器行业二十年的奋斗历程与心路感悟。谈及全域营销战略的成功,誉峰变频器强
    电子与消费 2025-04-22 13:22 123浏览
我要评论
0
0