这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度

共1条 1/1 1 跳转至

【换取手持数字示波器】-STM32F4PWM控制LED灯管亮度

工程师
2025-05-18 17:58:33   被打赏 22 分(兑奖)     打赏

基本原理是:通过调节PWM一个周期内的占空比来控制LED的亮度,通过改变一个周期中的高低电平所占比例,进而控制LED灯亮度强度。不仅适用于板载的LED小灯,也适用于台灯灯管。

image.png


如何使用PWM来控制小灯亮度,首先需要查看手册,找到具有定时器/PWM输出功能的引脚,如下的PF6。

image.png

之后在CubeMX里面查看时钟源:


image.png

image.png


配置相关的分频参数,PWM周期,占空比控制,自动重载等。

image.png


上面的90M/(900-1 + 1)/(99 + 1) = 1000Hz即 10ms的周期。其中99所在的Counter Period又成ARR。

占空比如何确定?得使用Pulse (16 bits value) 即49这个参数。Pulse/Period就是占空比。

查看生成的代码:

static void MX_TIM10_Init(void)
{

/* USER CODE BEGIN TIM10_Init 0 */

/* USER CODE END TIM10_Init 0 */

TIM_OC_InitTypeDef sConfigOC = {0};

/* USER CODE BEGIN TIM10_Init 1 */

/* USER CODE END TIM10_Init 1 */
htim10.Instance = TIM10;
htim10.Init.Prescaler = 900;
htim10.Init.CounterMode = TIM_COUNTERMODE_UP;
htim10.Init.Period = 99;
htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim10) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim10) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim10, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM10_Init 2 */

/* USER CODE END TIM10_Init 2 */
HAL_TIM_MspPostInit(&htim10);

}

初始化并启动TIM10:

MX_TIM10_Init();

	HAL_TIM_PWM_Start(&htim10, TIM_CHANNEL_1);
/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
	static uint8_t pulse = 0;
	static int8_t dir = 1;

	pulse += dir;

	if(pulse >= 100){
		dir = -1;
	}

	if(pulse <=0)
		dir = 1;
	__HAL_TIM_SET_COMPARE(&htim10,TIM_CHANNEL_1,pulse);    /*修改占空比*/

	HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}

台灯亮度变化:

WeChat_20250518175446-ezgif.com-video-to-gif-converter.gif



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]