STM32CubeMX系列(5)--定时器实现PWM+DMA控制LED

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

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

生成海报
点赞 0

sjxpf922

我还没有学会写个人说明!

暂无评论

相关推荐

STM32基于HAL库的DS18B20实现

开发板:野火挑战者_V2 GPIO:PE2 创建工程 使能USART1 用来通过串口打印温度值 配置GPIO 代码编写 我们先打开 DS18B20 的手册 1、DS18B20 复位与存在脉冲 复位 /*

STM32CubeMX + freeRTOS线程操作(一)

1、说明 在freeRTOS中创建两个任务,当按键第一次被按下后,任务1挂起,当再按下按键后 任务1恢复, 2、添加任务 3、线程1代码实现 /* USER CODE BEGIN H