文章目录[隐藏]
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、参考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的其它睡眠模式全部做出来,喜欢就点个赞吧。
版权声明:本文为CSDN博主「笨熊笨笨笨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_50074254/article/details/122988596
暂无评论