在STM32CubeMX系列(4)–定时器实现PWM控制LED的基础上,实现用DMA+PWM的方式实现普通LED灯的呼吸灯效果,只需要再开启一下DMA通道即可:
选择后,会自动开启中断:
在main.c中定义数组:
#define LEN 20
uint16_t pwm_buf[LEN] = {0};
在main函数中对上面的数组赋值
for(int i=0;i<LEN;i++)
{
pwm_buf[i]= 30*(i+1); /* 设置不同的占空比 */
}
在while中调用HAL库函数
HAL_Delay(200);
HAL_TIM_PWM_Start_DMA(&htim1,TIM_CHANNEL_1,(uint32_t*)pwm_buf,LEN);
重写中断回调函数:
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
HAL_TIM_PWM_Stop_DMA(&htim1, TIM_CHANNEL_1);
}
版权声明:本文为CSDN博主「sjxpf922」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sjxpf922/article/details/122724897
暂无评论