外贸网站官网怎么做,广安网站开发,网页搜索框下记录删不掉,服装外贸平台有哪些适用编译器#xff1a;Keil5
方式一#xff1a;
单独创建一个.s汇编文件#xff0c;在汇编文件内对函数进行EXPORT声明
r0寄存器是函数传入的第一个参数#xff0c;r1寄存器是函数传入的第二个参数#xff0c;以次类推。参数最多不确定是到r4为止#xff0c;还是到r12…适用编译器Keil5
方式一
单独创建一个.s汇编文件在汇编文件内对函数进行EXPORT声明
r0寄存器是函数传入的第一个参数r1寄存器是函数传入的第二个参数以次类推。参数最多不确定是到r4为止还是到r12可自行研究。
PRESERVE8THUMBAREA |.text|, CODE, READONLYALIGNEXPORT switch_value
switch_value PROCLDR r2, [r0]STR r2, [r1]BX LRENDPALIGNEND
在.c文件内对汇编函数再次声明需要对参数类型进行补充
void switch_value(uint32_t * a,uint32_t * b);
int main(void)
{uint32_t la0x55,lb0;Debug_UartCfg();while(1){delay_ms(500);switch_value(la,lb);debug_printf(hello,0x%x!\r\n,lb);}
}
方式二
在c语言代码中内联汇编代码在这种方式下好像是不能使用[r0][r1]这种方式获取参数了编译器会报错需要使用[参数1][参数2]这种方式。
void switch_value(uint32_t * a,uint32_t * b)
{__ASM volatile(LDR r2, [a]);__ASM volatile(STR r2, [b]);
}
其他方式
暂未确定看到网上有
__asm void switch_value(uint32_t * a,uint32_t * b)这种写法的但是在keil下会报错感兴趣的可以自行查阅keil help菜单下的c手册对__asm语法有详细说明。