简介:
感谢社区提供的板卡评测机会,板子收到后一直没来得及研究,按照视频教程先使用PWM板子输出控制台灯灯条亮度。本次试验供电模块及MOS管按照视频资料链接购买的,灯条从家里闲置的台灯上拆除下来使用。
PWM 输出配置
PWM 的初始化配置 只要在STM32CubeMX 简单配置即可生成 对应通路的初始化配置代码。PWM配置如下。
TIM2 的PWM 通路输出的PAD为PA6

对应在板子的PIN脚如下

按照资料的方式连接电路。


功能验证
硬件接线连接完毕后,我们在代码中添加PWM 初始化配置,及按键按下更新PWM 占空比代码。
初始化代码如下
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Config code for STM32_WPAN (HSE Tuning must be done before system clock configuration) */
MX_APPE_Config();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* Configure the peripherals common clocks */
PeriphCommonClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_GPDMA1_Init();
MX_RAMCFG_Init();
MX_RTC_Init();
MX_RNG_Init();
MX_ICACHE_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_4,00);
/* USER CODE END 2 */
/* Init code for STM32_WPAN */
MX_APPE_Init(NULL);
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
MX_APPE_Process();
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}在按键回调中更新PWM 输出占空比。
extern TIM_HandleTypeDef htim2;
static void Button_TriggerActions(void *arg)
{
ButtonDesc_t *p_buttonDesc = arg;
p_buttonDesc->longPressed = BSP_PB_GetState(p_buttonDesc->button);
static uint32_t pwm = 0;
pwm += 99;
if(pwm >= 1000)
pwm = 0;
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_4,pwm);
LOG_INFO_APP("Button %d pressed\n", (p_buttonDesc->button + 1));
switch (p_buttonDesc->button)
{
case B1:
UTIL_SEQ_SetTask(1U << TASK_BUTTON_1, CFG_SEQ_PRIO_0);
break;
case B2:
UTIL_SEQ_SetTask(1U << TASK_BUTTON_2, CFG_SEQ_PRIO_0);
break;
case B3:
UTIL_SEQ_SetTask(1U << TASK_BUTTON_3, CFG_SEQ_PRIO_0);
break;
default:
break;
}
return;
}
#endif
/* USER CODE END FD_LOCAL_FUNCTIONS */
/*************************************************************
*
* WRAP FUNCTIONS
*
*************************************************************/
void UTIL_SEQ_Idle( void )
{
#if ( CFG_LPM_LEVEL != 0)
HAL_SuspendTick();
UTIL_LPM_EnterLowPower();
HAL_ResumeTick();
#endif /* CFG_LPM_LEVEL */
return;
}上电后灯条已经被点亮,示波器查看PA6波形也已经正确输出了PWM信号。

通过板子上的按键也按照预期的调节灯条亮度
![1733926510437213.gif 1f97275027f9fd3c00255f296228f93f[00-00-04--00-00-16].gif](http://uphotos.eepw.com.cn/1719397809/pics/1733926510437213.gif)
我要赚赏金
