NXP

ARM Cortex-M3初探

2019-07-12 12:07发布

class="markdown_views prism-tomorrow-night">

ARM初探–alias


alias是为老函数,取一个新的名字!
attribute关键字来描述函数,变量和数据类型的属性,用于编译器对源代码的优化 #include 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"))); //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(); }