在这里详细解释一下 0x4804 这条指令:
它对应的机器码是 0100100000000100
Bit15 to Bit11 (01001)为LDR(literal)指令,既从PC偏移地址取数据送至寄存器Rt。
Bit10 to Bit8 (000)表明目的寄存器Rt为 R0
Bit7 to Bit0 (00000100)表明相对于 PC 的偏移量为 0b10000,既0x10。
注意PC的值是当前地址+4。
那么从 0x080000C8 + 0x4 + 0x10 = 0x080000DC 取出数据 0x0800092D 送至寄存器 R0。此地址是 SystemInit( )函数的地址。下一条语句 BLX R0 就是调用此系统初始化函数。
SystemInit( ) 这个函数在 system_stm32f0xx.c 这个文件里,主要完成系统时钟的初始化。可以点进去看一下具体的内容。 |