历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2020年02月04日 | ARM 汇编器对C的扩展

2020-02-04 来源:eefocus

__swi void ledtest();    //:声明 edtest 是个软中断。

__asm  内嵌汇编          //:通常在C程序里面需要嵌入汇编代码,这是就可以用__asm关键字来指示编译器下面的代码是用汇编语言来写的,

__inline 定义内联函数    //:就像在C语言中用define定义宏一样,用__inline关键字定义的函数在调用的地方被展开,这主要就是为了解决频繁的函数调用开销过大的问题,如果用__inline关键字定义的函数过大,每个调用函数的地方都会将其展开,这样的话在一定程度上也增加代码量,所以说一般用__inline  定义的函数代码量并不是很大。

 

由于在C语言中无法直接访问COSR, 因此需要通过嵌入式汇编语言来将CPSR 中I位清零,此外,访问CPSR 还需要专门的程序状态寄存器访问MSR  MRS 来实现。

用如下代码实现开中断:

__inline  void irq_enable(void)   //用关键字__inline 声明内联函数irq_enable()

{

int val;              //定义临时变量保存CPSR 的值

__asm              //关键字告诉编译器下面的代码是用汇编语言写的

{

mrs val,cpsr            //用mrs指令将程序状态寄存器cpsr中的值读入到val

bic val,val,#0x80          //用BIC指令将val中第7位(I位)清0

msr cpsr_c,val          //用MSR指令将val 的值写入到cpsr 此时I位已经清零 即开中断。

}

}

下面的函数实现的是关中断:

__inline  void irq_disable(void)   //用关键字__inline 声明内联函数irq_enable()

{

int val;              //定义临时变量保存CPSR 的值

__asm              //关键字告诉编译器下面的代码是用汇编语言写的

{

mrs val,cpsr            //用mrs指令将程序状态寄存器cpsr中的值读入到val

orr val,val,#0x80          //用BIC指令将val中第7位(I位)清0

msr cpsr_c,val          //用MSR指令将val 的值写入到cpsr 此时I位已经清零 即开中断。

}

}

推荐阅读

史海拾趣

AKM [Asahi Kasei Microsystems]公司的发展小趣事
  1. 成立与发展: Asahi Kasei Microsystems(AKM)成立于1983年,是日本旭化成集团旗下的一家子公司,总部位于东京。该公司主要致力于集成电路和半导体解决方案的研发和生产。AKM的创始目标是为市场提供高质量、高性能的模拟芯片和数字芯片,以满足消费电子、通信、汽车和工业等行业的需求。

  2. 产品创新: AKM在模拟和数字领域取得了一系列创新成果。其中,其声音处理技术尤为突出,涵盖了高保真音频、语音识别和声音传感器等领域。AKM的音频解决方案在高端音响、耳机、智能手机和汽车音响系统中得到广泛应用,为用户带来出色的听觉体验。

  3. 市场扩展: 随着技术的不断创新和产品线的拓展,AKM逐渐在全球范围内建立了广泛的客户群体。除了日本市场外,其产品远销亚洲、欧洲和美洲等地区。AKM的产品在全球范围内备受认可,并赢得了众多合作伙伴的信任与支持。

  4. 技术合作: 为了保持在市场上的竞争优势,AKM积极寻求与其他公司和机构的技术合作。通过与声学专家、电子设备制造商和汽车制造商等行业领先企业的合作,AKM不断吸收和借鉴先进的技术理念,推动产品创新和技术进步。

  5. 未来展望: 面对日益激烈的市场竞争和技术变革,AKM将继续加强研发投入,不断提升产品质量和技术水平。同时,AKM将积极应对全球经济形势和市场需求的变化,拓展新的业务领域,为客户提供更加全面和专业的解决方案。

DESOUTTER公司的发展小趣事

2001年,Desoutter公司与CP(Chicago Pneumatic)和GR(Grorges Renault)合并,成立了CPDI公司。这次合并使Desoutter公司获得了更强大的技术实力和市场资源,进一步巩固了其在气动工具领域的领先地位。合并后,CPDI公司继续致力于气动工具的研发和生产,并推出了一系列创新产品,以满足市场的不断变化和升级需求。

CTS [CTS Corporation]公司的发展小趣事

CTS Corporation的创始人在1896年创立了这家公司,当时的主要业务是设计并生产高品质的电话产品。随着电话技术的普及和通信行业的快速发展,CTS凭借其出色的产品质量和创新的设计理念,逐渐在电话市场中占据了一席之地。公司的创始人凭借其敏锐的商业洞察力和不懈的努力,为CTS奠定了坚实的基础。

European Crystal Org公司的发展小趣事

ECO始终将产品质量视为公司发展的生命线。公司建立了严格的质量管理体系,对生产过程中的每一个环节进行严格把关。此外,ECO还注重品牌形象的塑造,通过广告宣传、客户案例分享等方式提升品牌知名度和美誉度。这些努力使ECO在行业内树立了良好的口碑,吸引了越来越多的优质客户。

EREM公司的发展小趣事

EREM公司起源于1960年代的瑞士日内瓦,由一群热衷于精密工具制造的工程师创立。在当时,电子行业正逐渐兴起,对高精度工具的需求日益增长。EREM的创始人看到了这一市场机遇,决定专注于生产高精度镊子和钳子,以满足电子行业的需求。他们凭借精湛的工艺和不懈的努力,逐渐在行业内建立了良好的声誉。

Daburn公司的发展小趣事

随着公司规模的不断扩大,Daburn开始积极拓展国际市场。公司通过参加国际展览、与国外企业建立合作关系等方式,将产品推向全球市场。同时,Daburn还注重与当地企业的合作,共同开发符合当地市场需求的产品。这种市场拓展策略让Daburn在国际舞台上获得了更多的机会和挑战。

问答坊 | AI 解惑

求高手们帮忙看看这个射频可调衰减器

求高手们帮忙看看这个射频可调衰减器求高手们帮忙看看这个射频可调衰减器中Q1是用什么管的。型号是多小!!!!!原来上面用的是这个3个脚的管子 …

查看全部问答>

读简历的人最不喜欢看到的字眼

你知道你的简历里哪些词语会在不经意间惹恼招聘者吗?   动词列表是简历编写指南里保留的项目,调查还发现:简历里尽可能的堆满动词、形容词和副词的求职成功率更高。几乎所有的人事经理都喜欢选择有效的字句,而不是花样繁多的词藻的简历。   ...…

查看全部问答>

无法弹出wifi登陆框

wince加了wifi组件,同时里面有wifi的驱动和注册表 但插入wifi模块时候为什么不能够弹出登录框 dnw也没有打印出wifi加载的信息 想问一下 这个现象是不是与定制explore的时候有关呢? 由于需要,将系统的部分功能裁减了,比如说将\"任务栏\"去 ...…

查看全部问答>

串口线不通用吗?

我有两根直连串口线,一个是LPC2114开发板用的,一个是2440开发板用的。这两根串口线只能在各自的板子上用!不能混用!就是说,把LPC2114板子用的那个串口线拿到2440的板子上就不能用(超级终端不能正常收发数据)! 我想串口线应该是通用的吧?? ...…

查看全部问答>

FATAL ERROR - InitDetectCPU Failed

Debug Serial Init SysInit: GDTBase=8103d0e8 IDTBase=8105e860 KData=81065800 Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42 g_pPageDir = 81066000                &nb ...…

查看全部问答>

I2C总线库函数介绍

函数I2CMasterInitExpClk( )    …

查看全部问答>

LwIP在ucos ii下的移植,一点资料!

一个pdf,一个DSP的工程 网上找的,看了好久 还是没有实现! 大家一起来研究~~~…

查看全部问答>

M4开发板(14):硬件问题,关于Hanker开发板的VREF!

这几天又重新玩起了ADC采样功能,在测试AD采样加速度传感器的时候,我发现了问题,这个问题早在 https://bbs.eeworld.com.cn/viewthread.php?tid=330464这个帖子里,我就发现了,那就是AD采样的值不准确!!那个测倾角的程序,本来使用的那个MSP-E ...…

查看全部问答>

求助一下公模的问题

PCB板是不是也涉及到公模的问题,我做的是一块单片机最小系统板,想给它量产的话,上边要求要做适应公模,我想问一下公模的大小怎么确定,我从哪里可以得到公模尺寸…

查看全部问答>