ARM Cortex-M3初探

本文探讨了在ARM Cortex-M3处理器中使用alias指令优化代码的方法。通过将多个函数名映射到同一个函数实现上,简化了代码编写,提高了效率。示例展示了如何使用attribute关键字创建函数别名。

ARM初探–alias


alias是为老函数,取一个新的名字!
attribute关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化

#include <stdio.h>  
int __Hard_Fualt()   
{  
  printf("my func = %s\n",__FUNCTION__);  
  return 0;  
}  

int myFun() __attribute__((alias("__Hard_Fualt")));  
int main()  
{  
  myFun();  
  return 0;  
}  

下面是ARM Cortex-M3中应用alias的一段代码能够简化,程序的编写进程!

void NMI_Handler(void)          __attribute((alias("HardFault_Handler")));    //alias指令别名
void MemManage_Handler(void)    __attribute((alias("HardFault_Handler")));
void BusFault_Handler(void)     __attribute((alias("HardFault_Handler")));
void UsageFault_Handler(void)   __attribute((alias("HardFault_Handler")));
void SVC_Handler(void)          __attribute((alias("HardFault_Handler")));
void DebugMon_Handler(void)     __attribute((alias("HardFault_Handler")));
void PendSV_Handler(void)       __attribute((alias("HardFault_Handler")));

经过使用alias修饰之后,只需定义一个NMI_Handler()函数即可,其它的函数调用的时候就会调用NMI_Handler()函数;

void HardFault_Handler(void)
{
    __disable_irq();
    __set_MSP(__Vectors);
    LEDS_SETUP();
    {
        register int count;
        for (count = 0; count < 5; count++)
        {
            LedRunningOn();
            Delay_ms(250);
            LedRunningOff();

            LedConnectedOn();
            Delay_ms(250);
            LedConnectedOff();

            Delay_ms(1000);
        }
    }
    NVIC_SystemReset();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andrewbytecoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值