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唤醒事件

STM32汇编指令(一)WFI 和 WFE相关推荐

  1. arm汇编指令WFI和WFE

    1. 前言 很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂.最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清楚. WF ...

  2. arm指令和C语言指令一样吗,ARM WFI和WFE指令

    ARM WFI和WFE指令 作者:wowo 发布于:2014-12-10 22:43 分类:ARMv8A Arch 1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂.最近准 ...

  3. ARM WFI和WFE指令【转】

    本文转载至:http://www.wowotech.net/armv8a_arch/wfe_wfi.html 1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂.最近准备研究 ...

  4. ARM WFI和WFE指令

    1. 前言 蜗蜗很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂.最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清楚. ...

  5. STM32单片机-汇编指令2

    目录: 11.STMFD和LDMFD指令 1)STMFD SP! ,{R0-R7,LR}   2)LDMFD SP! ,{R0-R7,LR} 99.伪指令 1)PROC伪指令   2)EXPORT伪指 ...

  6. arm 待机指令 WFI和WFE

    百度百科上对于待机的解释: 待机是将当前处于运行状态的数据保存在内存中,机器只对内存供电,而硬盘.屏幕和CPU等部件则停止供电.由于数据存储在速度快的内存中,因此进入等待状态和唤醒的速度比较快. 对于 ...

  7. STM32单片机-汇编指令1

    目录: 1.ldr/str/mov指令 1)LDR指令   2)STR和LDRB指令   3)MOV指令   4)使用示例 2.MOVS指令 3.LDM表示装载,STM表示存储 4.teq指令 5.使 ...

  8. RAM汇编指令DMB、DSB、ISB、SEV等

    最近用keil调试STM32时,在代码中遇到了一些汇编指令,如DMB.DSB.ISB.SEV,现总结如下: DMB.DSB.ISB.SEV等指令都属于RAM汇编指令,在<ARM Cortex-M ...

  9. arm汇编指令详细整理及实例详解

    目录 一.简介 二.ARM 汇编指令说明 2.1 32位数据操作指令 2.2 32位存储器数据传送指令 2.3 32位转移指令 2.4 其它32位指令 三.实例讲解 3.1 MRS 3.2 MSR 3 ...

最新文章

  1. 算法-------LIS算法(Java版本)
  2. 用示波器恢复软盘里的游戏,这个程序员大神的操作太硬核了
  3. case 关键字后面的的值有什么要求吗?
  4. 【推荐系统】协同过滤 零基础到入门
  5. python tkinter计算器实例_python -Tkinter 实现一个小计算器功能
  6. 未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight
  7. layui文本框填充值_layui输入框中只允许输入整数的实现方法
  8. java ldap 分页_具有从属引用的 LDAP 分页查询未正确处理
  9. 无法打开虚拟机“Ubuntu2” (D:\software\Ubuntu2.vmx): 未找到文件。 是否从库中移除“Ubuntu2”?
  10. Redis五大基本数据类型及其相关命令及常用用途
  11. 算法工程师面试备战笔记2_一个完整机器学习项目的流程
  12. HTTP/2之服务器推送(Server Push)最佳实践
  13. 计算机网络—数据链路层的流量控制与可靠传输机制(思维导图)
  14. 以京东为代表电商平台成中华老字号销售增速最快渠道
  15. 【Python】:用python做下百度2014笔试题
  16. 应用安全_WTS-WAF绕过
  17. 等比缩放公式_CVPR2019 | 旷视提出MetaSR:单一模型实现超分辨率任意缩放因子
  18. 语音芯片c语言程序,语音芯片4004C语言.doc
  19. Kerberos认证模型(c语言实现)
  20. 计算机无法验证签名,win7系统无法验证文件数字签名的解决方法

热门文章

  1. ble理论(14) ble 扫描详解
  2. ES6结构赋值,一篇就够
  3. python输入名字输出你好代码_003-输入和输出
  4. 大数据具体内涵与外延尚未被清楚界定
  5. (附源码)计算机毕业设计基于JAVA的毕业设计管理系统
  6. 【Android】多功能二维码实现思路,自动连接WI-FI
  7. 离散题目10(判断是否为满射函数 )
  8. wireshark抓包vx ip
  9. 填坑记1-nrf52840出现error flash download failed -cortex-M4错误的解决办法-清风电子开发板
  10. Linux部署SpringBoot项目完整教程