STM32L431 立即睡眠模式(代码+讲解)


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、参考STM32L431中文手册

在这里插入图片描述
如上图所示,你要想完成立即睡眠模式,你必须进入模式的两种情况来考虑。在考虑的过程中,尤其要注意没有中断挂起这句话(我是选择WFI,所以没考虑WFE)。
这句话的意思是睡眠前最好关了除唤醒外的中断,不然你会发现还没睡呢,就唤醒。这里一定要注意一个中断–Systick。我被这个东西坑了好久。其它中断,你们自行屏蔽,不要把唤醒的屏蔽了。

二、代码展示

1.主函数

代码如下(示例):

-------------------主函数---------------------------
int main(void)
{
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  SystemClock_Config();
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN WHILE */
HAL_SuspendTick(); //屏蔽tick中断,即系统时钟中断。
  while (1)
  {
	HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); //先把灯关了
	if(HAL_GPIO_ReadPin(GPIOB,KEY2_Pin)== GPIO_PIN_RESET)	//判断是否进入立即睡眠
	{
		HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON,PWR_SLEEPENTRY_WFI);//睡起来
	}
  }
}

2.唤醒中断回执函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)//外部中断回调函数
 {
	
	 if(GPIO_Pin==KEY1_Pin)//检测是否为外部中断2
	{
		 HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET)//睡醒了点个灯
	}
 }

总结

我用电源测试,不睡眠15mA,睡眠后是9mA。没用达到手册记载,可能是因为我其它东西还没有配完。可以先看看。有问题留言。
核心代码就那几句(睡眠,屏蔽中断),后续,我会把这个CPU的其它睡眠模式全部做出来,喜欢就点个赞吧。

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值