目录
1. 在 SYS 选项里,将 Debug 设为 Serial Wire编辑
2. 将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator
4.配置定时器设置PWM,有效电平设置为Low(低电平),因为LED灯低电平亮
STM32F103C8T6 PWM资源:
高级定时器(TIM1):7路
通用定时器(TIM2~TIM4):各4路

是一个脉冲周期内,高电平的时间与整个周期时间的比例
由TIMx_CCRx寄存器决定,通常设置CNT < CCRx为有效电平中的高电平,则CRR/ARR决定占空比,例如CRR为100,ARR为500,则占空比为20%


假如:PSC = 71Hz,ARR = 499Hz,Tclk = 72M Hz,
则T为 72 x 500 / 72000000 = 0.5ms
频率为 1 / T = 2kHz
LED灯为什么可以越来越亮,越来越暗?
这是由不同的占空比决定的。
如何计算周期/频率?
假如频率为 2kHz ,则:PSC=71,ARR=499,上面已经讲过
LED灯连接到哪个定时器的哪一路?
通过看产品手册:
打开CubeMX配置STM32F103C8T6





- // 使能 Timer4 第3通道 PWM 输出
- HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);
-
- uint16_t pwmVal = 0; // 调整PWM占空比
- uint8_t swap = 1; // 设置改变方向。1:占空比越来越大;0:占空比越来越小
-
- while (1)
- {
- HAL_Delay(1);
-
- if(swap)
- pwmVal++;
- else
- pwmVal--;
-
- if(pwmVal > 500)
- swap = 0;
- else if(pwmVal == 0)
- swap = 1;
-
- //修改比较值,修改占空比
- __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal);
- }