STM32待机模式Standby Mode与ADC DMA模式测试备忘

本文记录了STM32芯片在运行十秒后自动进入待机模式,并通过WakeUp引脚唤醒的测试过程。在唤醒后,系统需清除PWR_FLAG_WU和PWR_FLAG_SB标志,以确保能再次进入待机。同时,介绍了如何开启ADC的扫描模式,使用DMA自动将Ch7和Ch8的采样数据存入数组,采样完成后,数据会按特定顺序排列并触发中断。STM32Cube自动生成的代码简化了这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)STM32运行十秒后自动进入待机,使用WakeUp引脚唤醒CPU后,重复以上动作。


int main(void)
{
	time_cnt = 0;
    
    HAL_Init();
	SystemClock_Config();
    
	HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_RESET);
	HAL_PWR_DisableWakeUpPin(PWR_CSR_EWUP);						//禁止wakeup PA0引脚,可以用来做普通引脚功能
    
    
	while (1)
	{
		HAL_Delay(1000);
        HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);					//运行时,闪LED
        time_cnt++;
        if(time_cnt >= 10)										//10秒后,进入待机模式
        {
            time_cnt = 0;
            
			//打开wakeup引脚,待机后来个上升沿就可以唤醒cpu了
            HAL_PWR_EnableWakeUpPin(PWR_CSR_EWUP);
			//清除wakeup_flag,这里很重要,假如没有,就不能重复的让cpu唤醒再进入待机
			//即HAL_PWR_EnterSTANDBYMode()将不起作用!!
            __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
			//cpu进入待机模式,NREST Pin,IWDG,RTC alarm,WakeUp引脚上升沿,都可以唤醒cpu
            HAL_PWR_EnterSTANDBYMode();
        }
    }
}



其他都没什么,最重要的是注意要清一下唤醒标志位 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值