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