32单片机,C语言与汇编联合编译的几种方式-方式一:

时间:2024-07-07 11:45:00

单独创建一个.s汇编文件,在汇编文件内对函数进行EXPORT声明

r0寄存器是函数传入的第一个参数,r1寄存器是函数传入的第二个参数,以次类推。参数最多不确定是到r4为止,还是到r12,可自行研究。


				PRESERVE8
                THUMB
					
                AREA    |.text|, CODE, READONLY
				ALIGN
				EXPORT switch_value
switch_value    PROC
                LDR     r2, [r0]
				STR		r2, [r1]
                BX      LR
                ENDP

                ALIGN

                END

在.c文件内,对汇编函数再次声明,需要对参数类型进行补充

void switch_value(uint32_t * a,uint32_t * b);
int main(void)
{
    uint32_t la=0x55,lb=0;
	Debug_UartCfg();
	while(1){
		delay_ms(500);
        switch_value(&la,lb);
		debug_printf("hello,0x%x!\r\n",lb);
	}
}