这里,我们要准备两个文件,一个是汇编文件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语言和汇编相互套用
推荐阅读最新更新时间: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经济实惠
[嵌入式]
Part3_lesson1---ARM汇编编程概述
bootloader以及内核需要使用汇编语言,特别是在初始化的时候!以及在效率要求很高的地方会使用。 汇编程序框架: 其入口在_start处,这个入口需要用一个关键字为.global来声明它是一个全局的标号,那么在外部文件才能够引用到它。 .section表示这是一个段,.text表示这是一个代码段。 简化之后的框架 要调试某个文件是把格式为elf的文件烧写到内存里面去调试。 要下载某个文件是要把格式为二进制的文件烧写到nandflash里面去运行。 start.S文件 makefile文件的编写: all:start.o arm-linux-ld -Ttext 0x50000000 -o start.elf
[单片机]
基于ARM7内核LPC2119芯片实现双向DC/DC变换器的设计
为了实现直流能量的双向传输,双向DC/DC变换器被广泛应用于UPS系统、航天电源系统、电动汽车驱动及蓄电池充放电维护等场合。 在这些应用当中,很多时候都要求开关电源不仅能够控制能量的双向流动,还要能够实现低压、大电流的输出。在开关频率不太高的情况下,随着输出电压的降低、输出电流的增加,整流损耗就成了影响开关电源效率的主要冈素。因此,为了提高开关电源的效率,就必须设法降低整流损耗。而在本文中采用的同步整流技术就是一种降低整流损耗的有效手段。 在以往的电源设计当中,模拟控制技术因其动态响应快、无量化误差、价格低廉等优点而被广泛应崩;而数字控制技术则由于其成本和技术等方面的因素而较少得到应用。近年来,随着半导体技术的不断发展,数
[单片机]
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芯片。 山姆·奥特曼因为万亿美元而登上头条新闻,他曾表示半导体行业需要他,而建立庞大的芯片制造网络需要通过向全球投资者寻求大量资金,他则需要
[嵌入式]
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语言数据类型范围 十进制数有正数和负数之分,二进制数也有
[单片机]