【CH32V305FBP6】移植 RT-Thread

文章目录

  • 前言
  • 实现
    • 修改链接文件
    • 移植 RTT 代码
    • 修改启动文件
    • 修改中断文件
    • 修改主文件

前言

移植 RT-Thread 到 CH32V305FBP6。

实现

修改链接文件

	.text :{. = ALIGN(4);*(.text)*(.text.*)*(.rodata)*(.rodata*)*(.gnu.linkonce.t.*)/* section information for finsh shell */. = ALIGN(4);__fsymtab_start = .;KEEP(*(FSymTab))__fsymtab_end = .;. = ALIGN(4);__vsymtab_start = .;KEEP(*(VSymTab))__vsymtab_end = .;/* section information for initial. */. = ALIGN(4);__rt_init_start = .;KEEP(*(SORT(.rti_fn*)))__rt_init_end = .;/* section information for modules */. = ALIGN(4);__rtmsymtab_start = .;KEEP(*(RTMSymTab))__rtmsymtab_end = .;. = ALIGN(4);	} >FLASH AT>FLASH 

移植 RTT 代码

移植 rtthread 和 drivers 代码,并添加头文件路径

/drivers
/rtthread/include
/rtthread/include/libc
/rtthread/libcpu
/rtthread/libcpu/risc-v/common
/rtthread/libcpu/risc-v/SW_Handler
/rtthread/src
/rtthread/components/drivers/include
/rtthread/components/drivers/misc
/rtthread/components/drivers/serial
/rtthread/components/finsh
/rtthread

修改启动文件

/********************************** (C) COPYRIGHT *******************************
* File Name          : startup_ch32v30x_D8C.s
* Author             : WCH
* Version            : V1.0.0
* Date               : 2021/06/06
* Description        : CH32V307x-CH32V305x vector table for eclipse toolchain.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for 
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/.section	.init,"ax",@progbits.global	_start.align	1
_start:j	handle_reset.section    .vector,"ax",@progbits.align  1
_vector_base:.option norvc;.word   _start.word   0.word   NMI_Handler                /* NMI */.word   HardFault_Handler          /* Hard Fault */.word   0.word   Ecall_M_Mode_Handler       /* Ecall M Mode */.word   0.word   0.word   Ecall_U_Mode_Handler       /* Ecall U Mode */.word   Break_Point_Handler        /* Break Point */.word   0.word   0.word   SysTick_Handler            /* SysTick */.word   0.word   SW_Handler                 /* SW */.word   0/* External Interrupts */.word   WWDG_IRQHandler            /* Window Watchdog */.word   PVD_IRQHandler             /* PVD through EXTI Line detect */.word   TAMPER_IRQHandler          /* TAMPER */.word   RTC_IRQHandler             /* RTC */.word   FLASH_IRQHandler           /* Flash */.word   RCC_IRQHandler             /* RCC */.word   EXTI0_IRQHandler           /* EXTI Line 0 */.word   EXTI1_IRQHandler           /* EXTI Line 1 */.word   EXTI2_IRQHandler           /* EXTI Line 2 */.word   EXTI3_IRQHandler           /* EXTI Line 3 */.word   EXTI4_IRQHandler           /* EXTI Line 4 */.word   DMA1_Channel1_IRQHandler   /* DMA1 Channel 1 */.word   DMA1_Channel2_IRQHandler   /* DMA1 Channel 2 */.word   DMA1_Channel3_IRQHandler   /* DMA1 Channel 3 */.word   DMA1_Channel4_IRQHandler   /* DMA1 Channel 4 */.word   DMA1_Channel5_IRQHandler   /* DMA1 Channel 5 */.word   DMA1_Channel6_IRQHandler   /* DMA1 Channel 6 */.word   DMA1_Channel7_IRQHandler   /* DMA1 Channel 7 */.word   ADC1_2_IRQHandler          /* ADC1_2 */.word   USB_HP_CAN1_TX_IRQHandler  /* USB HP and CAN1 TX */.word   USB_LP_CAN1_RX0_IRQHandler /* USB LP and CAN1RX0 */.word   CAN1_RX1_IRQHandler        /* CAN1 RX1 */.word   CAN1_SCE_IRQHandler        /* CAN1 SCE */.word   EXTI9_5_IRQHandler         /* EXTI Line 9..5 */.word   TIM1_BRK_IRQHandler        /* TIM1 Break */.word   TIM1_UP_IRQHandler         /* TIM1 Update */.word   TIM1_TRG_COM_IRQHandler    /* TIM1 Trigger and Commutation */.word   TIM1_CC_IRQHandler         /* TIM1 Capture Compare */.word   TIM2_IRQHandler            /* TIM2 */.word   TIM3_IRQHandler            /* TIM3 */.word   TIM4_IRQHandler            /* TIM4 */.word   I2C1_EV_IRQHandler         /* I2C1 Event */.word   I2C1_ER_IRQHandler         /* I2C1 Error */.word   I2C2_EV_IRQHandler         /* I2C2 Event */.word   I2C2_ER_IRQHandler         /* I2C2 Error */.word   SPI1_IRQHandler            /* SPI1 */.word   SPI2_IRQHandler            /* SPI2 */.word   USART1_IRQHandler          /* USART1 */.word   USART2_IRQHandler          /* USART2 */.word   USART3_IRQHandler          /* USART3 */.word   EXTI15_10_IRQHandler       /* EXTI Line 15..10 */.word   RTCAlarm_IRQHandler        /* RTC Alarm through EXTI Line */.word   USBWakeUp_IRQHandler       /* USB Wakeup from suspend */.word   TIM8_BRK_IRQHandler        /* TIM8 Break */.word   TIM8_UP_IRQHandler         /* TIM8 Update */.word   TIM8_TRG_COM_IRQHandler    /* TIM8 Trigger and Commutation */.word   TIM8_CC_IRQHandler         /* TIM8 Capture Compare */.word   RNG_IRQHandler             /* RNG */.word   0.word   SDIO_IRQHandler            /* SDIO */.word   TIM5_IRQHandler            /* TIM5 */.word   SPI3_IRQHandler            /* SPI3 */.word   UART4_IRQHandler           /* UART4 */.word   UART5_IRQHandler           /* UART5 */.word   TIM6_IRQHandler            /* TIM6 */.word   TIM7_IRQHandler            /* TIM7 */.word   DMA2_Channel1_IRQHandler   /* DMA2 Channel 1 */.word   DMA2_Channel2_IRQHandler   /* DMA2 Channel 2 */.word   DMA2_Channel3_IRQHandler   /* DMA2 Channel 3 */.word   DMA2_Channel4_IRQHandler   /* DMA2 Channel 4 */.word   DMA2_Channel5_IRQHandler   /* DMA2 Channel 5 */.word   ETH_IRQHandler             /* ETH */.word   ETH_WKUP_IRQHandler        /* ETH WakeUp */.word   CAN2_TX_IRQHandler         /* CAN2 TX */.word   CAN2_RX0_IRQHandler        /* CAN2 RX0 */.word   CAN2_RX1_IRQHandler        /* CAN2 RX1 */.word   CAN2_SCE_IRQHandler        /* CAN2 SCE */.word   USBFS_IRQHandler           /* USBFS */.word   USBHSWakeup_IRQHandler     /* USBHS Wakeup */.word   USBHS_IRQHandler           /* USBHS */.word   DVP_IRQHandler             /* DVP */.word   UART6_IRQHandler           /* UART6 */.word   UART7_IRQHandler           /* UART7 */.word   UART8_IRQHandler           /* UART8 */.word   TIM9_BRK_IRQHandler        /* TIM9 Break */.word   TIM9_UP_IRQHandler         /* TIM9 Update */.word   TIM9_TRG_COM_IRQHandler    /* TIM9 Trigger and Commutation */.word   TIM9_CC_IRQHandler         /* TIM9 Capture Compare */.word   TIM10_BRK_IRQHandler       /* TIM10 Break */.word   TIM10_UP_IRQHandler        /* TIM10 Update */.word   TIM10_TRG_COM_IRQHandler   /* TIM10 Trigger and Commutation */.word   TIM10_CC_IRQHandler        /* TIM10 Capture Compare */.word   DMA2_Channel6_IRQHandler   /* DMA2 Channel 6 */.word   DMA2_Channel7_IRQHandler   /* DMA2 Channel 7 */.word   DMA2_Channel8_IRQHandler   /* DMA2 Channel 8 */.word   DMA2_Channel9_IRQHandler   /* DMA2 Channel 9 */.word   DMA2_Channel10_IRQHandler  /* DMA2 Channel 10 */.word   DMA2_Channel11_IRQHandler  /* DMA2 Channel 11 */.option rvc;.section    .text.vector_handler, "ax", @progbits.weak   NMI_Handler                /* NMI */.weak   HardFault_Handler          /* Hard Fault */.weak   Ecall_M_Mode_Handler       /* Ecall M Mode */.weak   Ecall_U_Mode_Handler       /* Ecall U Mode */.weak   Break_Point_Handler        /* Break Point */.weak   SysTick_Handler            /* SysTick */.weak   SW_Handler                 /* SW */.weak   WWDG_IRQHandler            /* Window Watchdog */.weak   PVD_IRQHandler             /* PVD through EXTI Line detect */.weak   TAMPER_IRQHandler          /* TAMPER */.weak   RTC_IRQHandler             /* RTC */.weak   FLASH_IRQHandler           /* Flash */.weak   RCC_IRQHandler             /* RCC */.weak   EXTI0_IRQHandler           /* EXTI Line 0 */.weak   EXTI1_IRQHandler           /* EXTI Line 1 */.weak   EXTI2_IRQHandler           /* EXTI Line 2 */.weak   EXTI3_IRQHandler           /* EXTI Line 3 */.weak   EXTI4_IRQHandler           /* EXTI Line 4 */.weak   DMA1_Channel1_IRQHandler   /* DMA1 Channel 1 */.weak   DMA1_Channel2_IRQHandler   /* DMA1 Channel 2 */.weak   DMA1_Channel3_IRQHandler   /* DMA1 Channel 3 */.weak   DMA1_Channel4_IRQHandler   /* DMA1 Channel 4 */.weak   DMA1_Channel5_IRQHandler   /* DMA1 Channel 5 */.weak   DMA1_Channel6_IRQHandler   /* DMA1 Channel 6 */.weak   DMA1_Channel7_IRQHandler   /* DMA1 Channel 7 */.weak   ADC1_2_IRQHandler          /* ADC1_2 */.weak   USB_HP_CAN1_TX_IRQHandler  /* USB HP and CAN1 TX */.weak   USB_LP_CAN1_RX0_IRQHandler /* USB LP and CAN1RX0 */.weak   CAN1_RX1_IRQHandler        /* CAN1 RX1 */.weak   CAN1_SCE_IRQHandler        /* CAN1 SCE */.weak   EXTI9_5_IRQHandler         /* EXTI Line 9..5 */.weak   TIM1_BRK_IRQHandler        /* TIM1 Break */.weak   TIM1_UP_IRQHandler         /* TIM1 Update */.weak   TIM1_TRG_COM_IRQHandler    /* TIM1 Trigger and Commutation */.weak   TIM1_CC_IRQHandler         /* TIM1 Capture Compare */.weak   TIM2_IRQHandler            /* TIM2 */.weak   TIM3_IRQHandler            /* TIM3 */.weak   TIM4_IRQHandler            /* TIM4 */.weak   I2C1_EV_IRQHandler         /* I2C1 Event */.weak   I2C1_ER_IRQHandler         /* I2C1 Error */.weak   I2C2_EV_IRQHandler         /* I2C2 Event */.weak   I2C2_ER_IRQHandler         /* I2C2 Error */.weak   SPI1_IRQHandler            /* SPI1 */.weak   SPI2_IRQHandler            /* SPI2 */.weak   USART1_IRQHandler          /* USART1 */.weak   USART2_IRQHandler          /* USART2 */.weak   USART3_IRQHandler          /* USART3 */.weak   EXTI15_10_IRQHandler       /* EXTI Line 15..10 */.weak   RTCAlarm_IRQHandler        /* RTC Alarm through EXTI Line */.weak   USBWakeUp_IRQHandler       /* USB Wakeup from suspend */.weak   TIM8_BRK_IRQHandler        /* TIM8 Break */.weak   TIM8_UP_IRQHandler         /* TIM8 Update */.weak   TIM8_TRG_COM_IRQHandler    /* TIM8 Trigger and Commutation */.weak   TIM8_CC_IRQHandler         /* TIM8 Capture Compare */.weak   RNG_IRQHandler             /* RNG */.weak   SDIO_IRQHandler            /* SDIO */.weak   TIM5_IRQHandler            /* TIM5 */.weak   SPI3_IRQHandler            /* SPI3 */.weak   UART4_IRQHandler           /* UART4 */.weak   UART5_IRQHandler           /* UART5 */.weak   TIM6_IRQHandler            /* TIM6 */.weak   TIM7_IRQHandler            /* TIM7 */.weak   DMA2_Channel1_IRQHandler   /* DMA2 Channel 1 */.weak   DMA2_Channel2_IRQHandler   /* DMA2 Channel 2 */.weak   DMA2_Channel3_IRQHandler   /* DMA2 Channel 3 */.weak   DMA2_Channel4_IRQHandler   /* DMA2 Channel 4 */.weak   DMA2_Channel5_IRQHandler   /* DMA2 Channel 5 */.weak   ETH_IRQHandler             /* ETH */.weak   ETH_WKUP_IRQHandler        /* ETH WakeUp */.weak   CAN2_TX_IRQHandler         /* CAN2 TX */.weak   CAN2_RX0_IRQHandler        /* CAN2 RX0 */.weak   CAN2_RX1_IRQHandler        /* CAN2 RX1 */.weak   CAN2_SCE_IRQHandler        /* CAN2 SCE */.weak   USBFS_IRQHandler           /* USBFS */.weak   USBHSWakeup_IRQHandler     /* USBHS Wakeup */.weak   USBHS_IRQHandler           /* USBHS */.weak   DVP_IRQHandler             /* DVP */.weak   UART6_IRQHandler           /* UART6 */.weak   UART7_IRQHandler           /* UART7 */.weak   UART8_IRQHandler           /* UART8 */.weak   TIM9_BRK_IRQHandler        /* TIM9 Break */.weak   TIM9_UP_IRQHandler         /* TIM9 Update */.weak   TIM9_TRG_COM_IRQHandler    /* TIM9 Trigger and Commutation */.weak   TIM9_CC_IRQHandler         /* TIM9 Capture Compare */.weak   TIM10_BRK_IRQHandler       /* TIM10 Break */.weak   TIM10_UP_IRQHandler        /* TIM10 Update */.weak   TIM10_TRG_COM_IRQHandler   /* TIM10 Trigger and Commutation */.weak   TIM10_CC_IRQHandler        /* TIM10 Capture Compare */.weak   DMA2_Channel6_IRQHandler   /* DMA2 Channel 6 */.weak   DMA2_Channel7_IRQHandler   /* DMA2 Channel 7 */.weak   DMA2_Channel8_IRQHandler   /* DMA2 Channel 8 */.weak   DMA2_Channel9_IRQHandler   /* DMA2 Channel 9 */.weak   DMA2_Channel10_IRQHandler  /* DMA2 Channel 10 */.weak   DMA2_Channel11_IRQHandler  /* DMA2 Channel 11 */NMI_Handler:
HardFault_Handler:
Ecall_M_Mode_Handler:
Ecall_U_Mode_Handler:
Break_Point_Handler:
SysTick_Handler:
SW_Handler:
WWDG_IRQHandler:
PVD_IRQHandler:
TAMPER_IRQHandler:
RTC_IRQHandler:
FLASH_IRQHandler:
RCC_IRQHandler:
EXTI0_IRQHandler:
EXTI1_IRQHandler:
EXTI2_IRQHandler:
EXTI3_IRQHandler:
EXTI4_IRQHandler:
DMA1_Channel1_IRQHandler:
DMA1_Channel2_IRQHandler:
DMA1_Channel3_IRQHandler:
DMA1_Channel4_IRQHandler:
DMA1_Channel5_IRQHandler:
DMA1_Channel6_IRQHandler:
DMA1_Channel7_IRQHandler:
ADC1_2_IRQHandler:
USB_HP_CAN1_TX_IRQHandler:
USB_LP_CAN1_RX0_IRQHandler:
CAN1_RX1_IRQHandler:
CAN1_SCE_IRQHandler:
EXTI9_5_IRQHandler:
TIM1_BRK_IRQHandler:
TIM1_UP_IRQHandler:
TIM1_TRG_COM_IRQHandler:
TIM1_CC_IRQHandler:
TIM2_IRQHandler:
TIM3_IRQHandler:
TIM4_IRQHandler:
I2C1_EV_IRQHandler:
I2C1_ER_IRQHandler:
I2C2_EV_IRQHandler:
I2C2_ER_IRQHandler:
SPI1_IRQHandler:
SPI2_IRQHandler:
USART1_IRQHandler:
USART2_IRQHandler:
USART3_IRQHandler:
EXTI15_10_IRQHandler:
RTCAlarm_IRQHandler:
USBWakeUp_IRQHandler:
TIM8_BRK_IRQHandler:
TIM8_UP_IRQHandler:
TIM8_TRG_COM_IRQHandler:
TIM8_CC_IRQHandler:
RNG_IRQHandler:
SDIO_IRQHandler:
TIM5_IRQHandler:
SPI3_IRQHandler:
UART4_IRQHandler:
UART5_IRQHandler:
TIM6_IRQHandler:
TIM7_IRQHandler:
DMA2_Channel1_IRQHandler:
DMA2_Channel2_IRQHandler:
DMA2_Channel3_IRQHandler:
DMA2_Channel4_IRQHandler:
DMA2_Channel5_IRQHandler:
ETH_IRQHandler:
ETH_WKUP_IRQHandler:
CAN2_TX_IRQHandler:
CAN2_RX0_IRQHandler:
CAN2_RX1_IRQHandler:
CAN2_SCE_IRQHandler:
USBFS_IRQHandler:
USBHSWakeup_IRQHandler:
USBHS_IRQHandler:
DVP_IRQHandler:
UART6_IRQHandler:
UART7_IRQHandler:
UART8_IRQHandler:
TIM9_BRK_IRQHandler:
TIM9_UP_IRQHandler:
TIM9_TRG_COM_IRQHandler:
TIM9_CC_IRQHandler:
TIM10_BRK_IRQHandler:
TIM10_UP_IRQHandler:
TIM10_TRG_COM_IRQHandler:
TIM10_CC_IRQHandler:
DMA2_Channel6_IRQHandler:
DMA2_Channel7_IRQHandler:
DMA2_Channel8_IRQHandler:
DMA2_Channel9_IRQHandler:
DMA2_Channel10_IRQHandler:
DMA2_Channel11_IRQHandler:
1:j 1b.section	.text.handle_reset,"ax",@progbits.weak	handle_reset.align	1
handle_reset:
.option push 
.option	norelax csrw mepc, t0la gp, __global_pointer$
.option	pop 
1:la sp, _eusrstack 
2:/* Load data section from flash to RAM */la a0, _data_lmala a1, _data_vmala a2, _edatabgeu a1, a2, 2f
1:lw t0, (a0)sw t0, (a1)addi a0, a0, 4addi a1, a1, 4bltu a1, a2, 1b
2:/* Clear bss section */la a0, _sbssla a1, _ebssbgeu a0, a1, 2f
1:sw zero, (a0)addi a0, a0, 4bltu a0, a1, 1b
2:
/* Configure pipelining and instruction prediction */li t0, 0x1fcsrw 0xbc0, t0/* Enable interrupt nesting and hardware stack */li t0, 0x1fcsrw 0x804, t0/* Enable floating point and global interrupt, configure privileged mode */li t0, 0x7800csrw mstatus, t0
/* Configure the interrupt vector table recognition mode and entry address mode */la t0, _vector_baseori t0, t0, 3           csrw mtvec, t0jal  SystemInitla t0, entrycsrw mepc, t0mret

修改中断文件

/* ch32v30x_it.c */
#include "ch32v30x_it.h"
#include "board.h"
#include <rtthread.h>void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));/********************************************************************** @fn      NMI_Handler** @brief   This function handles NMI exception.** @return  none*/
void NMI_Handler(void)
{GET_INT_SP();rt_interrupt_enter();rt_kprintf(" NMI Handler\r\n");rt_interrupt_leave();FREE_INT_SP();
}/********************************************************************** @fn      HardFault_Handler** @brief   This function handles Hard Fault exception.** @return  none*/
void HardFault_Handler(void)
{GET_INT_SP();rt_interrupt_enter();rt_kprintf(" hardfult\r\n");rt_interrupt_leave();FREE_INT_SP();
}
/* ch32v30x_it.h */
#ifndef __CH32V30x_IT_H
#define __CH32V30x_IT_H#include "debug.h"#define GET_INT_SP()   asm("csrrw sp,mscratch,sp")
#define FREE_INT_SP()  asm("csrrw sp,mscratch,sp")#endif /* __CH32V30x_IT_H */

修改主文件

#include "ch32v30x.h"
#include <rtthread.h>
#include <rthw.h>
#include "drivers/pin.h"/********************************************************************** @fn      main** @brief   main is just one of the threads, in addition to tshell,idle* This main is just a flashing LED, the main thread is registered in * rtthread_startup, tshell uses the serial port to receive interrupts, * and the interrupt stack and thread stack are used separately.** @return  none*/
int main(void)
{rt_kprintf("\r\n MCU: CH32V305\r\n");SystemCoreClockUpdate();rt_kprintf(" SysClk: %dHz\r\n",SystemCoreClock);rt_kprintf(" ChipID: %08x\r\n",DBGMCU_GetCHIPID());while(1){rt_kprintf("hello world!\r\n");rt_thread_mdelay(500);}
}

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

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

相关文章

Go单元测试

Go 语言中&#xff0c;单元测试是通过标准库中的 testing 包来实现的&#xff0c;该包提供了一组功能&#xff0c;使得编写、运行和管理单元测试变得简单和高效。 一、规则 测试文件的命名规则 Go 中的测试文件命名规则是在被测试的源文件名后面加上 _test.go。例如&#xff0…

matplotlib下载安装

matplotlib下载安装过程同之前写的pygame很类似。 Pygame下载安装 python官网 1.搜索matplotlib 直接点进去 查看历史版本&#xff0c;因为新版本可能出现与python不匹配问题。 我选择3.6.3版本&#xff0c;因为我安装的python是3.8&#xff0c;可以匹配版本。同时window操…

Linux文件描述符与FILE指针互相转换

目录 1、文件描述符转换为 FILE 指针 2、FILE 指针转换为文件描述符 在Linux中&#xff0c;文件描述符&#xff08;file descriptor, fd&#xff09;和FILE指针&#xff08;也称为文件流指针&#xff0c;FILE pointer&#xff09;是两种常见的文件操作接口。文件描述符是一个…

Cesium与Three相机同步(3)

Cesium与Three融合的案例demo <!DOCTYPE html> <html lang"en" class"dark"><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"><meta name"viewport" content&q…

C++ 类和对象 构造函数

一 类的6个默认成员函数&#xff1a; 如果一个类中什么成员都没有&#xff0c;简称为空类。 例&#xff1a; #include <iostream> class Empty {// 空类&#xff0c;什么成员都没有 }; 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&a…

洛谷 P1035 [NOIP2002 普及组] 级数求和

本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 BY-SA协议。 因此&#xff0c;若需转载/引用本文&#xff0c;请注明作者并附原文链接&#xff0c;且禁止删除/修改本段文字。 违者必究&#xff0c;谢谢配合。 个人主页&#xff1a;blog.csdn.net/jzw…

qt 读取配置文件

在Qt中读取配置文件&#xff0c;主要有以下几种方法&#xff1a; 使用QFile和QTextStream类&#xff1a; 这种方法适用于读取任意文本文件&#xff0c;包括配置文件。使用QFile的open()方法打开配置文件。使用QTextStream的readLine()方法逐行读取配置数据。使用QXmlStreamRea…

谷粒商城学习-笔记大全

1&#xff0c;谷粒商城-01-项目介绍 2&#xff0c;谷粒商城笔记-02-项目整体效果展示 3&#xff0c;谷粒商城笔记-03-分布式基础概念 4&#xff0c;谷粒商城笔记-04-项目微服务架构图简介 5&#xff0c;谷粒商城学习笔记-05-项目微服务划分图 6&#xff0c;谷粒商城学习-06-使用…

【LinuxC语言】手撕Http协议之accept_request函数实现(一)

文章目录 前言accept_request函数作用accept_request实现解析方法根据不同方法进行不同操作http服务器响应格式unimplemented函数实现总结前言 在计算机网络中,HTTP协议是一种常见的应用层协议,它定义了客户端和服务器之间如何进行数据交换。在这篇文章中,我们将深入探讨Li…

C++模块化之内部类

目录 1.引言 2.内部类的访问控制 3.优缺点分析 4.实际运用 4.1.实现复杂数据结构 4.2.封装细节实现 4.3.事件处理和回调 4.4.模板元编程辅助类 4.5. 访问控制和封装 4.6. 代码组织和模块化 5.总结 1.引言 在C中&#xff0c;内部类&#xff08;Nested Class&#xff…

力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)

力扣爆刷第159天之TOP100五连刷61-65&#xff08;翻转单词、对称二叉树、遍历求和&#xff09; 文章目录 力扣爆刷第159天之TOP100五连刷61-65&#xff08;翻转单词、对称二叉树、遍历求和&#xff09;一、151. 反转字符串中的单词二、129. 求根节点到叶节点数字之和三、104. 二…

简单解读伦敦银CFD(XAG)走势图

从本质上说&#xff0c;伦敦银是一种差价合约&#xff08;CFD&#xff09;交易&#xff0c;在同平台所提供的MT4中&#xff0c;它的代码也许并不一样&#xff0c;有的平台会显示为XAG&#xff0c;有的平台会显示为LLS或Silver&#xff0c;但它们指的其实是同一个品种&#xff0…

Python学习笔记29:进阶篇(十八)常见标准库使用之质量控制中的数据清洗

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 质量控制…

基于单片机的防酒驾控制系统设计

摘 要&#xff1a; 酒后驾车的危害十分巨大&#xff0c;因此&#xff0c;笔者介绍了一种基于单片机的防酒驾控制系统。系统由酒精传感器 MQ-3测量汽车驾驶员体内的酒精含量浓度&#xff0c;通过 A/D 转换器转换成数字信号传给单片机&#xff0c;经过单片机处理后显示酒精浓度&a…

c++11新特性-6-using

文章目录 using1.定义别名 using 1.定义别名 1.1 定义类型别名 using t int; 1.2 定义函数指针 int test(double,string){}//返回值类型 int &#xff0c;参数类型&#xff1a;double string using func int(*) (double,string);int main() {func f test;f(10.5,“hello…

算法训练营day69

查并集&#xff1a;107. 寻找存在的路径 (kamacoder.com) #include<iostream> #include<vector>using namespace std;vector<int> father(101, 0);void init() {for(int i 1;i < 101;i) {father[i] i;} }int find(int v) {if(v father[v]) return v;e…

老年生活照护实训室:为养老服务业输送专业人才

本文探讨了老年生活照护实训室在养老服务业专业人才培养中的关键作用。通过详细阐述实训室的功能、教学实践、对学生能力的培养以及面临的挑战和解决方案&#xff0c;强调了其在提升人才素质、满足行业需求方面的重要性&#xff0c;旨在为养老服务业的可持续发展提供有力的人才…

electron教程(二)控制应用程序的事件生命周期

1.will-finish-launching 当应用程序完成基础的启动的时候被触发&#xff0c;在 Windows 和 Linux 中, will-finish-launching 事件与 ready 事件是相同的; 在 macOS 中&#xff0c;这个事件相当于 NSApplication 中的 applicationWillFinishLaunching 提示。 app.on(will-fi…

Butterfly主题文章标题改成转动小风车

效果 标题级别不同小风车颜色不同&#xff0c;鼠标移入会有转动变慢及变色效果。 新建css 建议在/source下创建诸如img/css/js等文件夹&#xff0c;存放文章或网站用的素材&#xff0c;分门别类后续也方便维护。 Hexo打包的时候&#xff0c;会自动把/source下的文件&#…