在STOP3模式下可以使用LPTIM生成PWM波来驱动指示灯表示系统的运行状态。
1、CubeMX设置
选择LPTIM1设置其模式为Counts internal clock events,使能其Ch1为输出,对应的引脚为PC1。设置计数器重载值为327,channel1输出通道为比较模式,比较值为164,实现一个占空比50%的PWM输出。

LPTIM1的时钟源设置为外部LSE。

完成设置并输出代码。
2、功能实现
在初始化函数中添加以下代码,系统设置SMPS供电,初始化外设并启动LPTIM1后,进入STOP3模式,不对MCU进行唤醒。编译并下载程序到开发板。
/* USER CODE BEGIN SysInit */
if(HAL_PWREx_ConfigSupply(PWR_SMPS_SUPPLY) != HAL_OK)
{
Error_Handler();
}
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_LPTIM1_Init();
MX_RTC_Init();
/* USER CODE BEGIN 2 */
/* Enable the SMPS regulator to improve power efficiency */
/*Flash in power down mode during Stop mode - by default after reset */
HAL_PWREx_DisableFlashFastWakeUp();
/*Reduce SRAM2 retention in Stop mode to 8 kB*/
HAL_PWREx_DisableRAMsContentStopRetention(PWR_SRAM2_PAGE2_STOP_RETENTION); // reduction -600nA
HAL_PWREx_DisableRAMsContentStopRetention(PWR_SRAM2_PAGE3_STOP_RETENTION);
HAL_PWREx_DisableRAMsContentStopRetention(PWR_FDCAN_USB_STOP_RETENTION);
HAL_PWREx_DisableRAMsContentStopRetention(PWR_PKA_STOP_RETENTION);
/*Put full SRAM1 in power down mode*/
HAL_PWREx_EnableRAMsPowerDown(PWR_SRAM1_POWERDOWN); // reduction - 500nA
/* Run PWM signal on PC1 pin*/
HAL_LPTIM_PWM_Start(&hlptim1, LPTIM_CHANNEL_1);
/* Enter STOP 2 mode */
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERMODE_STOP2, PWR_STOPENTRY_WFI);
从原理图上可知PA5为LED2的控制引脚,使用杜邦线连接PC1和PA5,开发板上电后可以看到LED灯被点亮,说明LPTIM1在STOP模式下,正常输出。

|