diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0b76fe5..e479d63 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,4 +4,5 @@
+
\ No newline at end of file
diff --git a/App/LetterShell.c b/App/LetterShell.c
new file mode 100644
index 0000000..bef3076
--- /dev/null
+++ b/App/LetterShell.c
@@ -0,0 +1,100 @@
+#include "LetterShell.h"
+#include "shell.h"
+/* 板级BSP头文件 */
+#include "Bsp.h"
+
+#define WR_BUFFER_SIZE 512
+
+/* 1. 创建shell对象,开辟shell缓冲区 */
+Shell Host; //Shell实例化
+char HostBuffer[WR_BUFFER_SIZE]; //读写缓冲区
+const COM_MAP_T *HostCom = TTY_COM;
+/**
+ * @brief Shell写函数
+ * @param ComId 串口号,ch 数据
+ * @retval void
+ * @note void
+ * @example void
+ */
+signed short ShellWrite(char* ch, unsigned short Len)
+{
+ ComSendStr(HostCom, (uint8_t* )ch,Len);
+ return Len;
+}
+/**
+ * @brief Shell读函数 - 中断回调实现
+ * @param Vector 中断向量号
+ * @retval void
+ * @note void
+ * @example void
+ */
+void LetterShellIrqFunc(void *Param)
+{
+ uint8_t ch = 0x00;
+ ch = ComReceiveChar(Param);
+ shellHandler(&Host, ch);
+}
+
+
+/**
+ * @brief 初始化Shell
+ * @note void
+ * @param ComX 串口号,baud 波特率
+ * @retval void
+ */
+void LetterShellInit(const COM_MAP_T *ComX, uint32_t Baud)
+{
+ //初始化串口
+ ComStdConfig(ComX, Baud);
+ //设置串口回调函数
+ IrqRegister(ComX->Periph.Irqn, LetterShellIrqFunc);
+ //设置中断等级
+ IrqEnable(ComX->Periph.Irqn,1,1);
+ //注册写函数
+ Host.write = ShellWrite;
+ //初始化LetterShell
+ shellInit(&Host, HostBuffer, WR_BUFFER_SIZE);
+}
+
+// /**
+// * @brief 打印版本号
+// * @param void
+// * @retval void
+// * @note void
+// * @example void
+// */
+// void version(void)
+// {
+// printf("%s,%s\r\n",HARDWARE_VERSION,SOFTWARE_VERSION);
+// }
+//
+// /**
+// * @brief 重启单片机
+// * @param void
+// * @retval void
+// * @note void
+// * @example void
+// */
+// void reboot(void)
+// {
+// SystemReboot();
+// }
+//
+// /**
+// * @brief 串口测试程序
+// * @param void
+// * @retval void
+// * @note void
+// * @example void
+// */
+//
+// void comTest(uint8_t ComId)
+// {
+// }
+//
+// //打印版本号
+// SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), version, version, version);
+// //软重启单片机
+// SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), reboot, reboot, reboot);
+// //串口测试
+// SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), comTest, comTest, comTest);
diff --git a/App/LetterShell.h b/App/LetterShell.h
new file mode 100644
index 0000000..3319cc9
--- /dev/null
+++ b/App/LetterShell.h
@@ -0,0 +1,8 @@
+#ifndef __LETTER_SHELL_H__
+#define __LETTER_SHELL_H__
+
+#include "Bsp.h"
+
+void LetterShellInit(const COM_MAP_T *ComX, uint32_t Baud);
+
+#endif
diff --git a/App/Voilet.c b/App/Voilet.c
deleted file mode 100644
index 5fff9a1..0000000
--- a/App/Voilet.c
+++ /dev/null
@@ -1,159 +0,0 @@
-//
-// Created by anonymous on 2026/5/24.
-//
-#include "Voilet.h"
-
-// LED灯数组
-#if (LED_NUM != 0)
-const GPIO_CONFIG LED_PERIPH[] = {
- {.GpioX = GPIO21, .Mode = GPIO_Mode_Out_PP, .Speed = GPIO_Speed_10MHz},
- {.GpioX = GPIO69, .Mode = GPIO_Mode_Out_PP, .Speed = GPIO_Speed_10MHz},
-};
-#endif
-//数字输入数组
-#if (DI_NUM != 0)
-const GPIO_CONFIG DI_PERIPH[] = {
- {},
-};
-#endif
-//数字输出数组
-#if (DO_NUM != 0)
-const GPIO_CONFIG DO_PERIPH[] = {
- {},
-};
-#endif
-//串口配置表
-const COM_CONFIG COM_PERIPH[] = {
- {COM0,.TxPort = GPIO9, .RxPort =GPIO10, .Speed = GPIO_Speed_50MHz},
- {COM1,.TxPort = GPIO2, .RxPort = GPIO3, .Speed = GPIO_Speed_50MHz},
-};
-
-void BspExtraInit(void);
-
-/**
- * @brief Voilet BSP的初始化函数
- * @note void
- * @param void
- * @retval void
- */
-void VoiletBspInit(void) {
- unsigned char i = 0;
-
- INTERRUPT_DISABLE
-
- //初始化中断系统
- IrqInit();
-
- //初始化延时库
- DelayConfig();
-
- //LED灯配置
-#if (LED_NUM != 0)
- for (i = 0;i < ARRAY_LEN(LED_PERIPH);i++) {
- //配置GPIO口
- GpioConfig(&LED_PERIPH[i].GpioX, LED_PERIPH[i].Mode, LED_PERIPH[i].Speed);
- }
-#endif
-
- //DI采集配置
-#if (DI_NUM != 0)
- // for (i = 0;i < DI_NUM;i++) {
- // //打开外设时钟
- // GpioClockEnable(&LED_PERIPH[i].GpioX);
- // //配置GPIO口
- // GpioConfig(&LED_PERIPH[i].GpioX, LED_PERIPH[i].Mode, LED_PERIPH[i].Speed);
- // }
-#endif
-
- //DO输出配置
-#if (DO_NUM != 0)
- // for (i = 0;i < DO_NUM;i++) {
- // //打开外设时钟
- // GpioClockEnable(&LED_PERIPH[i].GpioX);
- // //配置GPIO口
- // GpioConfig(&LED_PERIPH[i].GpioX, LED_PERIPH[i].Mode, LED_PERIPH[i].Speed);
- // }
-#endif
-
- //串口配置
- for (i = 0;i < ARRAY_LEN(COM_PERIPH);i++) {
- GpioConfig(&COM_PERIPH[i].TxPort, GPIO_Mode_AF_PP, COM_PERIPH[i].Speed);
- GpioConfig(&COM_PERIPH[i].RxPort, GPIO_Mode_IPU, COM_PERIPH[i].Speed);
- }
-
- INTERRUPT_ENABLE
-
- BspExtraInit();
-}
-
-/**
- * @brief 扩展库初始化
- * @note 理论上扩展库要在BSP的最后加载
- * @param void
- * @retval void
- */
-void BspExtraInit(void)
-{
- //LetterShell初始化
-#ifdef USE_SHELL
- LetterShellInit(TTY_COM,TTY_BAUD);
-#endif
-}
-
-
-/**
- * @brief 打开LED灯
- * @note void
- * @param Chnl 通道
- * @retval void
- */
-void LedOn(uint8_t Chnl)
-{
- if (Chnl >= LED_NUM)
- return;
- GpioSet(&LED_PERIPH[Chnl].GpioX, RESET);
-}
-/**
- * @brief 关闭LED灯
- * @note void
- * @param Chnl 通道
- * @retval void
- */
-void LedOff(uint8_t Chnl)
-{
- if (Chnl >= LED_NUM)
- return;
- GpioSet(&LED_PERIPH[Chnl].GpioX, SET);
-}
-
-void LedSet(uint8_t Chnl,uint8_t Value)
-{
- if (Chnl >= LED_NUM)
- return;
- if (Value == LED_ON) {
- GpioSet(&LED_PERIPH[Chnl].GpioX, RESET);
- }
- else {
- GpioSet(&LED_PERIPH[Chnl].GpioX, SET);
- }
-}
-
-/**
- * @brief 切换LED灯状态
- * @note void
- * @param Chnl 通道 Status 状态
- * @retval void
- */
-void LedToggle(uint8_t Chnl)
-{
- if (Chnl >= LED_NUM)
- return;
- if (GpioGet(&LED_PERIPH[Chnl].GpioX) == LED_ON)
- {
- GpioSet(&LED_PERIPH[Chnl].GpioX,LED_OFF);
- }
- else
- {
- GpioSet(&LED_PERIPH[Chnl].GpioX,LED_ON);
- }
-}
\ No newline at end of file
diff --git a/App/Voilet.h b/App/Voilet.h
deleted file mode 100644
index 45f49df..0000000
--- a/App/Voilet.h
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// Created by anonymous on 2026/5/24.
-//
-
-#ifndef VOILET_H
-#define VOILET_H
-
-#include "Bsp.h"
-
-#define LED_NUM 2 //LED灯数量
-#if (LED_NUM != 0)
- #define LED0 0
- #define LED1 1
-#endif
-
-#define DI_NUM 0
-#if (DI_NUM != 0)
-#endif
-
-#define DO_NUM 0
-#if (DO_NUM != 0)
-#endif
-
-#define TTY_BAUD 115200
-
-typedef struct {
- GPIO_MAP_T GpioX;
- GPIOMode_TypeDef Mode;
- GPIOSpeed_TypeDef Speed;
-}GPIO_CONFIG;
-
-typedef struct {
- COM_MAP_T *ComX;
- GPIO_MAP_T TxPort;
- GPIO_MAP_T RxPort;
- GPIOSpeed_TypeDef Speed;
-}COM_CONFIG;
-
-#endif //VOILET_H
diff --git a/App/main.c b/App/main.c
index a36e99d..81491c2 100644
--- a/App/main.c
+++ b/App/main.c
@@ -6,11 +6,11 @@
#include
/* BSP文件 */
#include "main.h"
-#include "Voilet.h"
+#include "Bsp.h"
int main(void) {
- VoiletBspInit();
+ BspInit();
while (1) {
LedToggle(LED0);
diff --git a/Board/Board.h b/Board/Board.h
new file mode 100644
index 0000000..853a064
--- /dev/null
+++ b/Board/Board.h
@@ -0,0 +1,38 @@
+//
+// Created by anonymous on 2026/5/28.
+//
+
+#ifndef _BOARD_H
+#define _BOARD_H
+
+/* Chip Library Enable */
+
+/* Extra Library Enable */
+#define TTY_COM COM1
+#define TTY_BAUD 115200
+
+//GPIO
+//数组信号输入/出开关
+#define DI_ON 1
+#define DI_OFF 0
+#define DO_ON 1
+#define DO_OFF 0
+//LED灯开关
+#define LED_ON 0
+#define LED_OFF 1
+
+#define LED_NUM 2 //LED灯数量
+#if (LED_NUM != 0)
+#define LED0 0
+#define LED1 1
+#endif
+
+#define DI_NUM 0
+#if (DI_NUM != 0)
+#endif
+
+#define DO_NUM 0
+#if (DO_NUM != 0)
+#endif
+
+#endif //_BOARD_H
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8955f09..1ad355b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -76,6 +76,7 @@ add_compile_definitions(
# [我加的] 添加头文件搜索路径 - 根据你的项目结构调整
include_directories(
App
+ Board
VoiletBspStm32F10x/Bsp/Inc
VoiletBspStm32F10x/StdLib/Inc
VoiletBspStm32F10x/System