stm32f103c8t6呼吸灯pwm标准库
时间: 2025-01-24 14:03:21 浏览: 50
### 使用STM32F103C8T6标准库实现PWM呼吸灯效果
为了在STM32F103C8T6上使用PWM实现呼吸灯效果,可以按照以下方法进行设置和编码。这涉及到配置定时器以生成PWM信号,并调整占空比来改变LED亮度。
#### 配置定时器用于PWM输出
首先,在硬件初始化阶段需定义好使用的外设及时钟源。对于STM32F103C8T6来说,通常会选择内部高速振荡器(HSI)作为系统时钟源[^4]。接着要选择一个合适的通用定时器(比如TIM2),并通过它的一个通道(CH1)来进行PWM输出操作:
```c
// 初始化 TIM2 的 PWM 功能
void Timer2_PWM_Init(void){
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
// 打开GPIOA与时基的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
// PA0(TIMER2 CH1) 输出模式推挽最大速度50MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 配置TIM2基本参数
TIM_TimeBaseStructure.TIM_Period = 999; // 自动重装载值ARR=999 即周期为1ms(假设APB1预分频系数为72)
TIM_TimeBaseStructure.TIM_Prescaler = 71; // PSC=71 (即PCLK1/72=1us计数一次), APB1默认72Mhz
TIM_TimeBaseStructure.TIM_ClockDivision = 0;// CKD=0不分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
// 配置TIM2_CH1比较单元
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; // 模式选择PWM1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High ;
TIM_OC1Init(TIM2,&TIM_OCInitStructure);
// 开启TIM2
TIM_Cmd(TIM2,ENABLE);
}
```
上述代码完成了对TIM2及其PA0引脚作为PWM输出端口的基础设定工作[^2]。
#### 调整PWM占空比控制LED亮度变化
为了让LED呈现出渐亮渐暗的效果,可以通过修改CCR寄存器中的数值动态调节PWM波形宽度,进而达到平滑过渡的目的。这里给出一段简单的函数用来更新指定通道下的比较匹配值(CCR),以此改变当前输出电平高低时间比例关系:
```c
// 设置TIM2 CH1的CCR值
void PWM_SetCompare1(uint16_t CCR_Value){
TIM_SetCompare1(TIM2,CCR_Value);
}
int main(){
uint16_t duty_cycle = 0;
int direction = 1;
Timer2_PWM_Init(); // 初始化PWM
while(1){
if(duty_cycle >= 100 || duty_cycle <= 0){
direction *= -1;
}
duty_cycle += direction;
PWM_SetCompare1((uint16_t)(duty_cycle * 9.99)); // 计算实际CCR值
Delay_ms(20); // 延迟一段时间观察效果
}
return 0;
}
```
这段程序实现了通过不断增减`duty_cycle`变量的方式让LED逐渐变亮又慢慢熄灭的过程,形成所谓的“呼吸”现象[^3]。
阅读全文
相关推荐


















