STM32汇编指令(一)WFI 和 WFE

4 篇文章 0 订阅
ARM汇编的调用

嵌入式开发,尤其是编写BSP的时候,非常接近底层,这个时候有可能用一些汇编指令来保证程序的简洁和高效,但是平常编写代码用到的都是C/C++,那么如何使用汇编指令呢?
其实这个问题也很简单,在C/C++中提供了关键字asm或者ASM来内嵌汇编,使用如下:

asm("WFI");

但是这种方法问题比较大,在Cortex-M平台上,这个语句有很大几率编译不通过,因为各家编译器又实现了自己的宏,具体可以在core_cmx.h中看到,如果我们的项目要在不同的编译器上通过,可以考虑使用条件编译来达标,不过这样付出的成本就很大。


另外一种简单的方法是使用intrinsic.h这个头文件,这个头文件把所有的汇编指令都封装成了诸如__Commnad()的函数形式,并且预编译为二进制包,故不必使用条件编译也能达到相同效果

WFI和WFE

这两条指令的作用都是令MCU进入休眠/待机状态以便降低功耗,但是略有区别:

WFI: wait for Interrupt 等待中断,即下一次中断发生前都在此hold住不干活

WFE: wait for Events 等待事件,即下一次事件发生前都在此hold住不干活

所以使用前要掂量好到底是什么会触发MCU唤醒事件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值