فهرست منبع

fix: 代码路径 stm32_base/ → stm32/ 匹配上部源码目录

OpenCode 1 روز پیش
والد
کامیت
4072e52293

+ 4 - 4
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/02-GPIO寄存器详解与三步进化法.md

@@ -224,7 +224,7 @@ PA0=0(0V)   → LED 亮(电流经 VCC→限流电阻→LED→PA0→GND)
 
 ### 进化 0:裸地址操作(直接操作内存)
 
-**文件:`stm32_base/01_led_register/User/main.c`**
+**文件:`stm32/01_led_register/User/main.c`**
 
 ```c
 #include "stm32f10x.h"
@@ -293,7 +293,7 @@ typedef struct
 
 利用这个封装,代码进化为:
 
-**文件:`stm32_base/01_led_register/User/main.c`**
+**文件:`stm32/01_led_register/User/main.c`**
 
 ```c
 #include "stm32f10x.h"
@@ -315,7 +315,7 @@ int main(void)
 
 ### 进化 2:使用位运算实现只改变某一位
 
-**文件:`stm32_base/01_led_register/User/main.c`**
+**文件:`stm32/01_led_register/User/main.c`**
 
 ```c
 #include "stm32f10x.h"
@@ -366,7 +366,7 @@ ST 在 `stm32f10x.h` 中把每个位域的值也预先定义好了宏:
 
 利用这些宏,最终版代码:
 
-**文件:`stm32_base/01_led_register/User/main.c`**
+**文件:`stm32/01_led_register/User/main.c`**
 
 ```c
 #include "stm32f10x.h"

+ 11 - 11
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/03-GPIO输出:LED控制.md

@@ -48,11 +48,11 @@ VCC(3.3V) → 限流电阻(1KΩ) → LED 正极 → LED 负极 → GPIO引脚
 
 ### 软件设计(寄存器版 — 直接操作)
 
-**项目路径**:`stm32_base/02_led_flow_register`
+**项目路径**:`stm32/02_led_flow_register`
 
 这个版本在 main.c 中将所有逻辑写在一起,直观但不利于复用。
 
-**文件:`stm32_base/02_led_flow_register/User/main.c`**
+**文件:`stm32/02_led_flow_register/User/main.c`**
 
 ```c
 #include "stm32f10x.h"
@@ -150,11 +150,11 @@ void Delay_s(uint16_t s)
 
 ### 软件设计(寄存器版 — 模块化封装)
 
-**项目路径**:`stm32_base/03_led_flow_pro_register`
+**项目路径**:`stm32/03_led_flow_pro_register`
 
 这个版本将 LED 驱动提取为独立模块 `Hardware/LED/led.c + led.h`,延时单独成文件 `User/delay.c + delay.h`,main.c 只负责调用。
 
-**文件:`stm32_base/03_led_flow_pro_register/Hardware/LED/led.h`**
+**文件:`stm32/03_led_flow_pro_register/Hardware/LED/led.h`**
 
 ```c
 #ifndef __LED_H
@@ -180,7 +180,7 @@ void LED_OffAll(uint16_t leds[], uint8_t size);  // 同时熄灭多个LED
 #endif
 ```
 
-**文件:`stm32_base/03_led_flow_pro_register/Hardware/LED/led.c`**
+**文件:`stm32/03_led_flow_pro_register/Hardware/LED/led.c`**
 
 ```c
 #include "led.h"
@@ -257,7 +257,7 @@ void LED_OffAll(uint16_t leds[], uint8_t size)
 }
 ```
 
-**文件:`stm32_base/03_led_flow_pro_register/User/delay.h`**
+**文件:`stm32/03_led_flow_pro_register/User/delay.h`**
 
 ```c
 #ifndef __DELAY_H
@@ -272,7 +272,7 @@ void Delay_s(uint16_t s);
 #endif
 ```
 
-**文件:`stm32_base/03_led_flow_pro_register/User/delay.c`**
+**文件:`stm32/03_led_flow_pro_register/User/delay.c`**
 
 ```c
 #include "delay.h"
@@ -321,7 +321,7 @@ void Delay_s(uint16_t s)
 }
 ```
 
-**文件:`stm32_base/03_led_flow_pro_register/User/main.c`**
+**文件:`stm32/03_led_flow_pro_register/User/main.c`**
 
 ```c
 #include "delay.h"
@@ -352,11 +352,11 @@ int main(void)
 
 ### 软件设计(HAL库版 — CubeMX生成)
 
-**项目路径**:`stm32_base/04_led_flow_pro_hal`
+**项目路径**:`stm32/04_led_flow_pro_hal`
 
 CubeMX 图形化配置 GPIOD(某些板子)或 GPIOA(我们用的板子),由工具生成初始化代码,用户在 `/* USER CODE */` 区间添加业务逻辑。
 
-**文件:`stm32_base/04_led_flow_pro_hal/Core/Src/main.c`**
+**文件:`stm32/04_led_flow_pro_hal/Core/Src/main.c`**
 
 ```c
 /* Includes ------------------------------------------------------------------*/
@@ -386,7 +386,7 @@ int main(void)
 }
 ```
 
-**文件:`stm32_base/04_led_flow_pro_hal/Core/Src/led.c`**
+**文件:`stm32/04_led_flow_pro_hal/Core/Src/led.c`**
 
 ```c
 #include "led.h"

+ 6 - 6
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/04-GPIO输入与NVIC中断系统.md

@@ -106,9 +106,9 @@ STM32F103 有 20 个 EXTI 通道(EXTI0~EXTI19),每个 GPIO 引脚都可以
 
 ### 软件设计(寄存器版)
 
-**项目路径**:`stm32_base/05_key_led_register`
+**项目路径**:`stm32/05_key_led_register`
 
-**文件:`stm32_base/05_key_led_register/Hardware/KEY/key.h`**
+**文件:`stm32/05_key_led_register/Hardware/KEY/key.h`**
 
 ```c
 #ifndef __KEY_H
@@ -121,7 +121,7 @@ void KEY_Init(void);
 #endif
 ```
 
-**文件:`stm32_base/05_key_led_register/Hardware/KEY/key.c`**
+**文件:`stm32/05_key_led_register/Hardware/KEY/key.c`**
 
 ```c
 #include "key.h"
@@ -187,7 +187,7 @@ void EXTI15_10_IRQHandler(void)
 }
 ```
 
-**文件:`stm32_base/05_key_led_register/User/main.c`**
+**文件:`stm32/05_key_led_register/User/main.c`**
 
 ```c
 #include "key.h"
@@ -210,7 +210,7 @@ int main(void)
 
 ### 软件设计(HAL库版)
 
-**项目路径**:`stm32_base/06_key_led_hal`
+**项目路径**:`stm32/06_key_led_hal`
 
 CubeMX 配置要点:
 1. PF10 配置为 `GPIO_EXTI10` + `GPIO_PULLUP`(上拉输入)
@@ -223,7 +223,7 @@ HAL 库中断处理流程:
 → HAL_GPIO_EXTI_Callback() → 用户重写Callback函数
 ```
 
-**文件:`stm32_base/06_key_led_hal/Core/Src/main.c`**(用户代码部分)
+**文件:`stm32/06_key_led_hal/Core/Src/main.c`**(用户代码部分)
 
 ```c
 /* USER CODE BEGIN 0 */

+ 5 - 5
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/06-串口USART通信.md

@@ -136,9 +136,9 @@ USART1 使用 PA9(TX)和 PA10(RX):
 
 ### 软件设计(寄存器版 — 轮询方式)
 
-**项目路径**:`stm32_base/07_usart_polling_register`
+**项目路径**:`stm32/07_usart_polling_register`
 
-**文件:`stm32_base/07_usart_polling_register/Hardware/USART/usart.h`**
+**文件:`stm32/07_usart_polling_register/Hardware/USART/usart.h`**
 
 ```c
 #ifndef __USART_H
@@ -155,7 +155,7 @@ void USART_ReceiveString(uint8_t buffer[], uint8_t *size);
 #endif
 ```
 
-**文件:`stm32_base/07_usart_polling_register/Hardware/USART/usart.c`**
+**文件:`stm32/07_usart_polling_register/Hardware/USART/usart.c`**
 
 ```c
 #include "usart.h"
@@ -251,11 +251,11 @@ void USART_ReceiveString(uint8_t buffer[], uint8_t *size)
 
 ### 软件设计(寄存器版 — printf重定向)
 
-**项目路径**:`stm32_base/11_usart_printf_register`
+**项目路径**:`stm32/11_usart_printf_register`
 
 通过重写 `fputc` 函数,将 `printf` 输出重定向到 USART1。
 
-**文件:`stm32_base/11_usart_printf_register/User/main.c`**
+**文件:`stm32/11_usart_printf_register/User/main.c`**
 
 ```c
 #include "stm32f10x.h"

+ 4 - 4
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/07-I2C通信与EEPROM 24C02.md

@@ -163,9 +163,9 @@ I2C 总线需要外部上拉电阻(典型值 4.7KΩ),因为 I2C 引脚使
 
 ### 软件设计(寄存器版 — 软件模拟 I2C)
 
-**项目路径**:`stm32_base/13_i2c_software_register`
+**项目路径**:`stm32/13_i2c_software_register`
 
-**文件:`stm32_base/13_i2c_software_register/Hardware/I2C/i2c.h`**
+**文件:`stm32/13_i2c_software_register/Hardware/I2C/i2c.h`**
 
 ```c
 #ifndef __I2C_H
@@ -198,7 +198,7 @@ uint8_t I2C_ReadByte(void);
 #endif
 ```
 
-**文件:`stm32_base/13_i2c_software_register/Hardware/I2C/i2c.c`**
+**文件:`stm32/13_i2c_software_register/Hardware/I2C/i2c.c`**
 
 ```c
 #include "i2c.h"
@@ -307,7 +307,7 @@ uint8_t I2C_ReadByte(void)
 }
 ```
 
-**文件:`stm32_base/13_i2c_software_register/User/main.c`**
+**文件:`stm32/13_i2c_software_register/User/main.c`**
 
 ```c
 #include "usart.h"

+ 7 - 7
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/08-SysTick与通用定时器TIM.md

@@ -172,9 +172,9 @@ CK_PSC = TIM 时钟频率(通常是 72MHz)
 
 ### 软件设计(SysTick 中断版)
 
-**项目路径**:`stm32_base/16_systick_led_twinkle_register`
+**项目路径**:`stm32/16_systick_led_twinkle_register`
 
-**文件:`stm32_base/16_systick_led_twinkle_register/User/systick.h`**
+**文件:`stm32/16_systick_led_twinkle_register/User/systick.h`**
 
 ```c
 #ifndef __SYSTICK_H
@@ -188,7 +188,7 @@ void Systick_Init(void);
 #endif
 ```
 
-**文件:`stm32_base/16_systick_led_twinkle_register/User/systick.c`**
+**文件:`stm32/16_systick_led_twinkle_register/User/systick.c`**
 
 ```c
 #include "systick.h"
@@ -226,9 +226,9 @@ void SysTick_Handler(void)
 
 ### 软件设计(TIM 中断版)
 
-**项目路径**:`stm32_base/18_tim_led_twinkle_register`
+**项目路径**:`stm32/18_tim_led_twinkle_register`
 
-**文件:`stm32_base/18_tim_led_twinkle_register/Hardware/TIM/tim6.h`**
+**文件:`stm32/18_tim_led_twinkle_register/Hardware/TIM/tim6.h`**
 
 ```c
 #ifndef __TIM6_H
@@ -242,7 +242,7 @@ void TIM6_Init(void);
 #endif
 ```
 
-**文件:`stm32_base/18_tim_led_twinkle_register/Hardware/TIM/tim6.c`**
+**文件:`stm32/18_tim_led_twinkle_register/Hardware/TIM/tim6.c`**
 
 ```c
 #include "tim6.h"
@@ -281,7 +281,7 @@ void TIM6_IRQHandler(void)
 }
 ```
 
-**文件:`stm32_base/18_tim_led_twinkle_register/User/main.c`**
+**文件:`stm32/18_tim_led_twinkle_register/User/main.c`**
 
 ```c
 #include "usart.h"

+ 14 - 14
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/09-TIM高级应用:PWM与输入捕获.md

@@ -90,13 +90,13 @@ TIM 的 ARR 和 CCRx 都有**影子寄存器**机制:
 
 ### 软件设计(寄存器版)
 
-**项目路径**:`stm32_base/20_tim_led_breathe_register`
+**项目路径**:`stm32/20_tim_led_breathe_register`
 
 **需求**:使用 TIM5_CH2 输出 PWM 到 PA1(LED1),占空比 0~99% 循环渐变。
 
 **硬件电路**:LED1 = PA1,TIM5_CH2 默认映射到 PA1(无需重映射)。
 
-**文件:`stm32_base/20_tim_led_breathe_register/Hardware/TIM/tim5.h`**
+**文件:`stm32/20_tim_led_breathe_register/Hardware/TIM/tim5.h`**
 
 ```c
 #ifndef __TIM5_H
@@ -117,7 +117,7 @@ void TIM5_SetDutyCycle(uint8_t duty);
 #endif
 ```
 
-**文件:`stm32_base/20_tim_led_breathe_register/Hardware/TIM/tim5.c`**
+**文件:`stm32/20_tim_led_breathe_register/Hardware/TIM/tim5.c`**
 
 ```c
 #include "tim5.h"
@@ -178,7 +178,7 @@ void TIM5_SetDutyCycle(uint8_t duty)
 }
 ```
 
-**文件:`stm32_base/20_tim_led_breathe_register/User/main.c`**
+**文件:`stm32/20_tim_led_breathe_register/User/main.c`**
 
 ```c
 #include "usart.h"
@@ -237,12 +237,12 @@ int main(void)
 
 ## 实验:PWM 周期/占空比独立控制
 
-**项目路径**:`stm32_base/22_tim_pwm_cycle_register`(周期捕获)
-**项目路径**:`stm32_base/24_tim_pwm_duty_register`(占空比捕获)
+**项目路径**:`stm32/22_tim_pwm_cycle_register`(周期捕获)
+**项目路径**:`stm32/24_tim_pwm_duty_register`(占空比捕获)
 
 两个项目共用同一份 TIM5 输出 + TIM4 输入捕获代码。区别仅在 main.c 的测量逻辑。
 
-**文件:`stm32_base/22_tim_pwm_cycle_register/User/main.c`**
+**文件:`stm32/22_tim_pwm_cycle_register/User/main.c`**
 
 ```c
 #include "usart.h"
@@ -274,7 +274,7 @@ int main(void)
 }
 ```
 
-**文件:`stm32_base/24_tim_pwm_duty_register/User/main.c`**
+**文件:`stm32/24_tim_pwm_duty_register/User/main.c`**
 
 ```c
 #include "usart.h"
@@ -325,11 +325,11 @@ int main(void)
 
 ### 输入捕获实现(TIM4 单通道测周期/频率)
 
-**项目路径**:`stm32_base/22_tim_pwm_cycle_register`
+**项目路径**:`stm32/22_tim_pwm_cycle_register`
 
 TIM4_CH1(PB6)捕获 PWM 输入上升沿,在中断中复位 CNT,直接读取 CCR1 获得周期。
 
-**文件:`stm32_base/22_tim_pwm_cycle_register/Hardware/TIM/tim4.h`**
+**文件:`stm32/22_tim_pwm_cycle_register/Hardware/TIM/tim4.h`**
 
 ```c
 #ifndef __TIM4_H
@@ -351,7 +351,7 @@ double TIM4_GetPWMFreq(void);
 #endif
 ```
 
-**文件:`stm32_base/22_tim_pwm_cycle_register/Hardware/TIM/tim4.c`**
+**文件:`stm32/22_tim_pwm_cycle_register/Hardware/TIM/tim4.c`**
 
 ```c
 #include "tim4.h"
@@ -446,11 +446,11 @@ double TIM4_GetPWMFreq(void)
 
 ### 输入捕获增强版(TIM4 双通道测周期+占空比)
 
-**项目路径**:`stm32_base/24_tim_pwm_duty_register`
+**项目路径**:`stm32/24_tim_pwm_duty_register`
 
 使用 TIM4 的 CH1(TI1 -> IC1)捕获周期,CH2(TI1 -> IC2)捕获占空比。通过**从模式复位**(SMS=100, TS=101)自动复位 CNT,无需中断。
 
-**文件:`stm32_base/24_tim_pwm_duty_register/Hardware/TIM/tim4.h`**
+**文件:`stm32/24_tim_pwm_duty_register/Hardware/TIM/tim4.h`**
 
 ```c
 #ifndef __TIM4_H
@@ -475,7 +475,7 @@ double TIM4_GetPWMDuty(void);
 #endif
 ```
 
-**文件:`stm32_base/24_tim_pwm_duty_register/Hardware/TIM/tim4.c`**(初始化部分差异)
+**文件:`stm32/24_tim_pwm_duty_register/Hardware/TIM/tim4.c`**(初始化部分差异)
 
 ```c
 void TIM4_Init(void)

+ 8 - 8
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/10-DMA数据传输.md

@@ -117,11 +117,11 @@ for (i = 0; i < 100; i++) {
 
 ### 软件设计(寄存器版)
 
-**项目路径**:`stm32_base/28_dma_mem2mem_register`
+**项目路径**:`stm32/28_dma_mem2mem_register`
 
 **需求**:将 SRAM 中源数组的数据通过 DMA 复制到目的数组,完成后翻转 LED。
 
-**文件:`stm32_base/28_dma_mem2mem_register/Hardware/DMA/dma.h`**
+**文件:`stm32/28_dma_mem2mem_register/Hardware/DMA/dma.h`**
 
 ```c
 #ifndef __DMA_H
@@ -138,7 +138,7 @@ void DMA1_Transmit(uint32_t srcAddr, uint32_t destAddr, uint16_t dataLen);
 #endif
 ```
 
-**文件:`stm32_base/28_dma_mem2mem_register/Hardware/DMA/dma.c`**
+**文件:`stm32/28_dma_mem2mem_register/Hardware/DMA/dma.c`**
 
 ```c
 #include "dma.h"
@@ -206,7 +206,7 @@ void DMA1_Channel1_IRQHandler(void)
 }
 ```
 
-**文件:`stm32_base/28_dma_mem2mem_register/User/main.c`**
+**文件:`stm32/28_dma_mem2mem_register/User/main.c`**
 
 ```c
 #include "usart.h"
@@ -257,11 +257,11 @@ int main(void)
 
 ### 软件设计(寄存器版 — 内存到外设)
 
-**项目路径**:`stm32_base/30_dma_mem2usart_register`
+**项目路径**:`stm32/30_dma_mem2usart_register`
 
 DMA + USART 使用 **DMA1 通道4**(USART1_TX 映射到此通道),配置为内存→外设方向:
 
-**文件:`stm32_base/30_dma_mem2usart_register/Hardware/DMA/dma.h`**
+**文件:`stm32/30_dma_mem2usart_register/Hardware/DMA/dma.h`**
 
 ```c
 #ifndef __DMA_H
@@ -278,7 +278,7 @@ void DMA1_Transmit(uint32_t srcAddr, uint32_t destAddr, uint16_t dataLen);
 #endif
 ```
 
-**文件:`stm32_base/30_dma_mem2usart_register/Hardware/DMA/dma.c`**
+**文件:`stm32/30_dma_mem2usart_register/Hardware/DMA/dma.c`**
 
 ```c
 #include "dma.h"
@@ -347,7 +347,7 @@ void DMA1_Channel4_IRQHandler(void)
 }
 ```
 
-**文件:`stm32_base/30_dma_mem2usart_register/User/main.c`**
+**文件:`stm32/30_dma_mem2usart_register/User/main.c`**
 
 ```c
 #include "usart.h"

+ 7 - 7
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/11-ADC模数转换.md

@@ -171,11 +171,11 @@ while (ADC1->CR2 & ADC_CR2_CAL)       // 等待校准完成(CAL 位硬件自
 
 ### 软件设计(寄存器版 — 单次采集)
 
-**项目路径**:`stm32_base/32_adc_single_register`
+**项目路径**:`stm32/32_adc_single_register`
 
 **需求**:使用 ADC1 通道 10(PC0)采集模拟电压,通过串口打印原始值和电压值。
 
-**文件:`stm32_base/32_adc_single_register/Hardware/ADC/adc.c`**
+**文件:`stm32/32_adc_single_register/Hardware/ADC/adc.c`**
 
 ```c
 #include "adc.h"
@@ -247,7 +247,7 @@ double ADC1_ReadV(void)
 }
 ```
 
-**文件:`stm32_base/32_adc_single_register/User/main.c`**
+**文件:`stm32/32_adc_single_register/User/main.c`**
 
 ```c
 #include "usart.h"
@@ -278,11 +278,11 @@ int main(void)
 
 ## 实验:双通道 ADC + DMA 采集
 
-**项目路径**:`stm32_base/34_adc_double_register`
+**项目路径**:`stm32/34_adc_double_register`
 
 多通道 + DMA 是 ADC 的典型高效用法。实际项目中使用 ADC1 的**通道10(PC0)**和**通道12(PC2)**,通过 DMA1 通道1自动搬运转换结果:
 
-**文件:`stm32_base/34_adc_double_register/Hardware/ADC/adc.h`**
+**文件:`stm32/34_adc_double_register/Hardware/ADC/adc.h`**
 
 ```c
 #ifndef __ADC_H
@@ -302,7 +302,7 @@ void ADC1_StartConvert_DMA(uint32_t destAddr, uint16_t len);
 #endif
 ```
 
-**文件:`stm32_base/34_adc_double_register/Hardware/ADC/adc.c`**
+**文件:`stm32/34_adc_double_register/Hardware/ADC/adc.c`**
 
 ```c
 #include "adc.h"
@@ -411,7 +411,7 @@ void ADC1_StartConvert_DMA(uint32_t destAddr, uint16_t len)
 }
 ```
 
-**文件:`stm32_base/34_adc_double_register/User/main.c`**
+**文件:`stm32/34_adc_double_register/User/main.c`**
 
 ```c
 #include "usart.h"

+ 11 - 11
X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/12-SPI通信与FSMC总线.md

@@ -99,9 +99,9 @@ MISO 逐位输入 ← 移位寄存器(8位) ← RX 缓冲区 → 读 DR
 
 ### 软件设计(寄存器版 — 软件模拟 SPI)
 
-**项目路径**:`stm32_base/36_spi_software_register`
+**项目路径**:`stm32/36_spi_software_register`
 
-**文件:`stm32_base/36_spi_software_register/Hardware/SPI/spi.h`**
+**文件:`stm32/36_spi_software_register/Hardware/SPI/spi.h`**
 
 ```c
 #ifndef __SPI_H
@@ -142,7 +142,7 @@ uint8_t SPI_SwapByte(uint8_t byte);
 #endif
 ```
 
-**文件:`stm32_base/36_spi_software_register/Hardware/SPI/spi.c`**
+**文件:`stm32/36_spi_software_register/Hardware/SPI/spi.c`**
 
 ```c
 #include "spi.h"
@@ -236,7 +236,7 @@ uint8_t SPI_SwapByte(uint8_t byte)
 }
 ```
 
-**文件:`stm32_base/36_spi_software_register/User/main.c`**
+**文件:`stm32/36_spi_software_register/User/main.c`**
 
 ```c
 #include "usart.h"
@@ -279,11 +279,11 @@ int main(void)
 
 ---
 
-## 硬件 SPI(stm32_base/37_spi_hardware_register)
+## 硬件 SPI(stm32/37_spi_hardware_register)
 
 硬件 SPI 使用 STM32 片内外设,更高效(硬件自动移位)。实际项目中 CS 片选仍用 GPIO(PC13)独立控制,SCK/MOSI 配置为复用推挽输出:
 
-**文件:`stm32_base/37_spi_hardware_register/Hardware/SPI/spi.h`**
+**文件:`stm32/37_spi_hardware_register/Hardware/SPI/spi.h`**
 
 ```c
 #ifndef __SPI_H
@@ -309,7 +309,7 @@ uint8_t SPI_SwapByte(uint8_t byte);
 #endif
 ```
 
-**文件:`stm32_base/37_spi_hardware_register/Hardware/SPI/spi.c`**
+**文件:`stm32/37_spi_hardware_register/Hardware/SPI/spi.c`**
 
 ```c
 #include "spi.h"
@@ -539,11 +539,11 @@ Bank1 分为 4 个子区(片选 NE1~NE4),各 64MB:
 
 ### 实验:FSMC 扩展 SRAM(寄存器版)
 
-**项目路径**:`stm32_base/39_fsmc_sram_register`
+**项目路径**:`stm32/39_fsmc_sram_register`
 
 使用 FSMC 的 Bank1 子区3(NE3,地址范围 0x68000000~0x6BFFFFFF),16 位数据总线连接外部 SRAM。
 
-**文件:`stm32_base/39_fsmc_sram_register/Hardware/FSMC/fsmc.h`**
+**文件:`stm32/39_fsmc_sram_register/Hardware/FSMC/fsmc.h`**
 
 ```c
 #ifndef __FSMC_H
@@ -557,7 +557,7 @@ void FSMC_Init(void);
 #endif
 ```
 
-**文件:`stm32_base/39_fsmc_sram_register/Hardware/FSMC/fsmc.c`**
+**文件:`stm32/39_fsmc_sram_register/Hardware/FSMC/fsmc.c`**
 
 ```c
 #include "fsmc.h"
@@ -661,7 +661,7 @@ void FSMC_GPIO_Init(void)
 // 读: data = *(uint16_t *)0x68000000;
 ```
 
-**文件:`stm32_base/39_fsmc_sram_register/User/main.c`**
+**文件:`stm32/39_fsmc_sram_register/User/main.c`**
 
 ```c
 #include "usart.h"