STM32 PWM学习
前言
PWM是我定时器常用的一个功能,例如:一个灯承受的电压不能过高,但由于自己正常管脚输出的电平过高,导致烧坏,这个时候PWM就派上用场了,PWM应用太多了,不一一列举了
一、PWM是什么?
PWM就是使用定时器的输出比较功能,例如:例句一个向上增长方式,极性为低有效的PWM。
你设置CCR的值,这个值是输入[0,ARR]之间的,在值从0慢慢增长的过程中,这个值小于CCR时,输出低电平,当这个值增长到大于CCR时就输出高电平,这样就产生了占空比,从而能控制输出电压了。
二、使用步骤
1.引入库
代码如下(示例):
void TIM11_Set_Compare(uint32_t compare)//通过控制寄存器CCR的值来控制输出占空比
{
TIM11->CCR1 = compare;
}
int main(void)
{
int32_t compare = 0;
uint8_t dir = 0;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM11_Init();
MX_USART3_UART_Init();
printf("PWM TEST\n");
HAL_TIM_PWM_Start(&htim11, TIM_CHANNEL_1);
while (1)
{
if(!dir)//由暗变亮
{
compare += 10;
if(compare >= 1000-1)
{
compare = 1000-1;
dir = 1;
}
}
else//由亮变暗
{
compare -= 10;
if(compare <= 0)
{
compare = 0;
dir = 0;
}
}
TIM11_Set_Compare(compare);
HAL_Delay(20);
}
}