STM32学习笔记(PWM输出)

本人采用Cube 进行的STM32库函数编程,PWM波的输出配置以及代码如下所示:(经过实际实验证明非常好用)
以下为定时器PWM输出函数,注意:使用时一定要把原来输出函数注释掉。
注释代码如下:
// sConfigOC.OCMode = TIM_OCMODE_PWM1;
// sConfigOC.Pulse = 0;
// sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
// sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
// {
// _Error_Handler(FILE, LINE);
// }

// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
// {
// _Error_Handler(FILE, LINE);
// }

// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
// {
// _Error_Handler(FILE, LINE);
// }

// if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
// {
// _Error_Handler(FILE, LINE);
// }
void PWM_Change_Duty(float x,float y,float z,float w)
{
TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1;//pwm输出模式配置
sConfigOC.Pulse = x;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
//pwm输出停止函数
if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_1) != HAL_OK)
{
_Error_Handler(FILE, LINE);//错误等待函数
}
//pwm输出配置函数
if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_1) != HAL_OK)
{
_Error_Handler(FILE,LINE);
}
//pwm输出开始函数
if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1)!= HAL_OK)
{
_Error_Handler(FILE,LINE);
}
sConfigOC.Pulse = y;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
//pwm输出停止函数
if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_2) != HAL_OK)
{
_Error_Handler(FILE, LINE);//错误等待函数
}
//pwm输出配置函数
if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_2) != HAL_OK)
{
_Error_Handler(FILE,LINE);
}
//pwm输出开始函数
if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2)!= HAL_OK)
{
_Error_Handler(FILE,LINE);
}

sConfigOC.Pulse = z;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
//pwm输出停止函数
if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_3) != HAL_OK)
{
_Error_Handler(FILE, LINE);//错误等待函数
}
//pwm输出配置函数
if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_3) != HAL_OK)
{
_Error_Handler(FILE,LINE);
}
//pwm输出开始函数
if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3)!= HAL_OK)
{
_Error_Handler(FILE,LINE);
}

sConfigOC.Pulse = w;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
//pwm输出停止函数
if(HAL_TIM_PWM_Stop(&htim4,TIM_CHANNEL_4) != HAL_OK)
{
_Error_Handler(FILE, LINE);//错误等待函数
}
//pwm输出配置函数
if(HAL_TIM_PWM_ConfigChannel(&htim4,&sConfigOC,TIM_CHANNEL_4) != HAL_OK)
{
_Error_Handler(FILE,LINE);
}
//pwm输出开始函数
if(HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4)!= HAL_OK)
{
_Error_Handler(FILE,LINE);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值