class="markdown_views prism-tomorrow-night">
ARM初探–alias
alias是为老函数,取一个新的名字!
attribute关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化
int __Hard_Fualt()
{
printf("my func = %s
",__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")));
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();
}