ARM程序集的调用嵌入式开发非常接近基础,特别是在创建BSP时。 此时,可以使用一些汇编指令来保证程序的简洁和高效。 但是,因为平时使用C/C编写代码,所以如何使用汇编指令呢?
其实这个问题也很简单,C/C提供关键字asm或asm来嵌入程序集,使用如下:
ASM(wfi ); 但这种方法的问题比较大,在Cortex-M平台上,该语句很可能无法编译。 因为各编译器安装了自己的宏。 具体而言,可以通过core_cmx.h来查看。 如果我们的项目通过不同的编译器,可以考虑使用条件编译来完成,但这需要很大的成本。
另一个简单的方法是使用名为intrinsic.h的头文件。 此头文件将所有汇编指令封装为函数格式(如__Commnad ) ),并预编译为二进制软件包,从而无需条件编译即可获得相同的效果
WFI和WFE命令都旨在使MCU进入休眠/待机状态以降低功耗,但略有不同。
WFI :等待中断。 也就是说,在发生下一个中断之前,我不会在这个岗位上工作。
WFE: wait for Events等待在下一个事件发生之前不在这个hold上工作的事件
所以,在使用前请称量一下是什么引起MCU的清醒事件