ARM学习笔记14——C语言和汇编相互套用

发布者:影子猎人最新更新时间:2020-02-18 来源: eefocus关键字:ARM  C语言  汇编  相互套用 手机看文章 扫描二维码
随时随地手机看文章

这里,我们要准备两个文件,一个是汇编文件start.S,另一个是C文件led.c。汇编文件套用C文件中的开关灯函数,C文件套用汇编文件中延时函数


//start.S 


.global led_init 


led_init:    


  @;GPC1CON  


  @;GPC1PUD


loop:  


  mov r0,#1    @将1存到寄存器r0中,实现LED开灯效果


  bl led_ops   @调用C文件中的led_ops函数,此时led_ops函数调用的参数会自动从寄存器中取,即r0


   mov r0,#0    @将0存到寄存器r0中,实现LED关灯效果


  bl led_ops


   b loop      @执行循环,使LED灯不停闪烁


delay:  


  sub r0,r0,#1  


  cmp r0,#0  


  bne delay  


  mov pc,lr



下面是C文件


//led.c 


void led_ops(int a){  


  if(a){   


volatile int *p=(int *)0xe0200080;   //volatile关键字确保本条指令不会因编译器的优化而省略,且要求每次直接读值,注意这个关键字在嵌入式C中非常重要


    *p=*p | (1<<3);  


  }


  else{   


    volatile int *p=(int *)0xe0200080;   


    for(int i=0;i<3;i++){          //执行位清零操作


      *p++=0x00000000;   


    }  


  }  


  delay(0xff0000);             //调用汇编文件中delay标签,执行延时


}


编译方法如下:

arm-linux-gcc led.c -o led.o

arm-linux-gcc start.S -o start.o

arm-linux-gcc -nostartfiles -nostdlib start.o led.o 

关键字:ARM  C语言  汇编  相互套用 引用地址:ARM学习笔记14——C语言和汇编相互套用

上一篇:ARM学习笔记15——串口通信基本原理
下一篇:ARM学习笔记13——LED驱动程序设计

推荐阅读最新更新时间:2024-11-09 02:18

德州仪器发布全新Arm® Cortex®-M0+ MCU 产品系列,让嵌入式系统更经济实惠
德州仪器发布全新Arm® Cortex®-M0+ MCU 产品系列,让嵌入式系统更经济实惠 全新 32 位通用 MCU 产品系列几乎适用于所有应用 中国上海(2023年3月16日)– 德州仪器 (TI)今日推出可扩展的 Arm® Cortex®-M0+ 微控制器 (MCU) 产品系列,进一步扩大德州仪器广泛的模拟和嵌入式处理半导体产品组合 。该产品系列具有丰富的计算、引脚排列、存储器和集成模拟选项。 此次发布的数十款MCU由直观软件和设计工具提供支持,使得MSPM0 MCU产品系列可助力设计人员将更多时间用于创新,减少评估和编程时间,将设计时间从几个月缩短至几天。Arm® Cortex®-M0+ MCU经济实惠
[嵌入式]
德州仪器发布全新<font color='red'>Arm</font>® Cortex®-M0+ MCU 产品系列,让嵌入式系统更经济实惠
Part3_lesson1---ARM汇编编程概述
bootloader以及内核需要使用汇编语言,特别是在初始化的时候!以及在效率要求很高的地方会使用。 汇编程序框架: 其入口在_start处,这个入口需要用一个关键字为.global来声明它是一个全局的标号,那么在外部文件才能够引用到它。 .section表示这是一个段,.text表示这是一个代码段。 简化之后的框架 要调试某个文件是把格式为elf的文件烧写到内存里面去调试。 要下载某个文件是要把格式为二进制的文件烧写到nandflash里面去运行。 start.S文件 makefile文件的编写: all:start.o   arm-linux-ld -Ttext 0x50000000 -o start.elf
[单片机]
Part3_lesson1---<font color='red'>ARM</font><font color='red'>汇编</font>编程概述
基于ARM7内核LPC2119芯片实现双向DC/DC变换器的设计
为了实现直流能量的双向传输,双向DC/DC变换器被广泛应用于UPS系统、航天电源系统、电动汽车驱动及蓄电池充放电维护等场合。 在这些应用当中,很多时候都要求开关电源不仅能够控制能量的双向流动,还要能够实现低压、大电流的输出。在开关频率不太高的情况下,随着输出电压的降低、输出电流的增加,整流损耗就成了影响开关电源效率的主要冈素。因此,为了提高开关电源的效率,就必须设法降低整流损耗。而在本文中采用的同步整流技术就是一种降低整流损耗的有效手段。 在以往的电源设计当中,模拟控制技术因其动态响应快、无量化误差、价格低廉等优点而被广泛应崩;而数字控制技术则由于其成本和技术等方面的因素而较少得到应用。近年来,随着半导体技术的不断发展,数
[单片机]
基于<font color='red'>ARM</font>7内核LPC2119芯片实现双向DC/DC变换器的设计
ok6410 按键测试c语言版程序
直接贴代码: /* name:led_key author:lvtory 硬件平台:ok6410 function: key1:实现从0-15二进制级数点亮led key2:实现初始化 key3-key6:按键对应点亮相应led 使用查询方式 create:2013.3.17 */ /**** led gpio NLED1-4 - GPM0-3 */ #define rGPMCON (*(volatile unsigned *)0x7F008820) #define rGPMDAT (*(volatile unsigned *)0x
[单片机]
AI芯片,开战
春节也没有阻挡AI跨越的脚步,2月16日凌晨,美国OpenAI公司的视频生成模型Sora再次冲击AI界,成为继ChatGPT后又一现象级应用。Sora的问世令世人惊呼:现实不存在了。 短短几日,AI又掀起新一轮浪潮,而作为其核心动力的AI芯片,也迎来巨变。 打倒英伟达 看着英伟达赚钱,市场玩家分外眼红。为了抢占市场,巨头不惜砸大钱布局市场。 先是OpenAI首席执行官山姆·奥特曼(Sam Altman)万亿美元造芯片,再是自嘲为“秃头骗子”的孙正义1000亿美元造AI芯片。 山姆·奥特曼因为万亿美元而登上头条新闻,他曾表示半导体行业需要他,而建立庞大的芯片制造网络需要通过向全球投资者寻求大量资金,他则需要
[嵌入式]
AI芯片,开战
Arm 引领软件定义汽车革新, 共同迈向汽车行业未来
汽车技术领域正处于关键的转折点,其未来依托于动态且适应性强的系统,并可通过软件不断提升驾驶体验。 如今,相较于一架仅包含 1,500 万行代码的波音 737,现在一辆汽车的代码行数已多达 6.5 亿。这个数字还将进一步增长,这项转型也将革新驾驶者与汽车的交互方式,并重新定义车厂与车主间的关系。 什么是软件定义汽车? 软件定义汽车 (SDV) 将紧密结合软硬件,使得汽车内部系统与外部世界的交互更加顺畅。SDV 将网络功能从专用硬件中解耦,使物理硬件和数字功能能并行开发。这种转变使软件能够推动汽车功能的差异化并实现商用,最大化地延长汽车的生命周期并提高其价值。随着汽车行业向 SDV 发展,车厂、软件开发者等相关方的作用将发生
[汽车电子]
欧盟推出首台ExaFlop超级计算机 采用ARM与NVIDIA的架构
官方消息,欧盟的首台 ExaFLOP 超级计算机将分别采用 ARM 和英伟达的架构,这标志着该地区在人工智能发展方面取得了突破性进展。欧盟开发首台 ExaFLOP 超级计算机表明其致力于实现完全的 技术独立 。 超级计算机 Jupiter 的总预算为 2.73 亿欧元。开发工作由欧洲高性能计算联合企业(European High-Performance Computing Joint Undertaking)以及由 Eviden 和 ParTec 组成的科技公司集团负责。ARM 超级计算机在业界的存在感一直很低,前十大超级计算机中只有一台采用了该架构。Jupiter 超级计算机将加入这一行列,因为据说它将采用 SiPearl 的
[网络通信]
MSP430初学:MSP430单片机C语言基础(二)
1.进制转换 作为一名”勤快“少年,我自然是: 2.数值数据的表示 1.储存单位 计算机的数据是以二进制形式存在的,所以它的储存单位也与二进制有关 储存单位:位bit,b,是数据储存的最小单位,表示一位二进制信息 字节Byte,B,是信息储存的基本单位,1B由8位二进制数字组成,1B=8b 2.有符号的二进制数 计算机中,无符号位和有符号位的取值范围区别_HD243608836的博客-CSDN博客_符号位 char 8bit 1Byte 2^8=256 C语言各数据类型大小和取值范围_画船听雨眠-CSDN博客_c语言数据类型范围 十进制数有正数和负数之分,二进制数也有
[单片机]
MSP430初学:MSP430单片机<font color='red'>C语言</font>基础(二)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved