stm32f103c8t6 PWM呼吸灯
时间: 2025-01-31 08:08:58 浏览: 31
STM32F103C8T6 使用PWM实现呼吸灯教程
创建工程并配置定时器
通过STM32CubeMX工具创建新项目,选择目标芯片为STM32F103C8Tx。在Pinout & Configuration界面中找到TIM3定时器,并将其模式设置为PWM Generation CH1。接着,在Configuration标签页下调整预分频系数(PSC)与时基周期(Auto Reload Register),以满足所需的频率需求[^1]。
初始化代码编写
进入main.c文件内完成必要的初始化工作:
#include "stm32f1xx_hal.h"
// 定义全局变量用于存储当前占空比数值
uint16_t currentDutyCycle = 0;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM3_Init(void);
int main(void){
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM3_Init();
/* 启动PWM */
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
while (1){
// 增加亮度
for(currentDutyCycle=0;currentDutyCycle<=1000;currentDutyCycle++){
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,currentDutyCycle);
HAL_Delay(5);
}
// 减少亮度
for(;currentDutyCycle>=0;currentDutyCycle--){
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,currentDutyCycle);
HAL_Delay(5);
}
}
}
上述程序实现了LED由暗逐渐变亮再慢慢熄灭的过程模拟真实世界中的“呼吸”现象[^4]。
修改比较值改变占空比
为了达到平滑过渡的效果,需要不断更新PWM信号的占空比参数。这可以通过调用__HAL_TIM_SET_COMPARE()
函数来实现,该函数允许动态更改指定通道上的计数匹配值从而影响最终输出脉宽[^3]。
配置GPIO引脚作为PWM输出端口
确保所选IO引脚被正确配置成复用推挽输出方式(AF_PP), 这样可以保证其行为完全受控于内部定时器模块而非直接连接到ODR寄存器上[^5]。
相关推荐


















