| 再比较一下,编译出来的目标代码,先看位操作版本: 506:   bRCC_CR_HSEON=1;
 507:
 508:   /* 等待HSE时钟就绪 */
 0x08000D58 2001      MOVS     r0,#0x01
 0x08000D5A 490F      LDR      r1,[pc,#60]  ; @0x08000D98
 0x08000D5C 6408      STR      r0,[r1,#0x40]
 509:   while (!bRCC_CR_HSERDY){}
 510:
 511:   /* 使能 PLL */
 0x08000D5E BF00      NOP
 0x08000D60 480D      LDR      r0,[pc,#52]  ; @0x08000D98
 0x08000D62 6C40      LDR      r0,[r0,#0x44]
 0x08000D64 2800      CMP      r0,#0x00
 0x08000D66 D0FB      BEQ      0x08000D60
 512:   bRCC_CR_PLLON=1;
 513:
 514:   /* 等待直到 PLL 就绪 */
 0x08000D68 2001      MOVS     r0,#0x01
 0x08000D6A 490B      LDR      r1,[pc,#44]  ; @0x08000D98
 0x08000D6C 6608      STR      r0,[r1,#0x60]
 515:   while(!bRCC_CR_PLLRDY){}
 516:
 517:   /* 把 PLL 作为系统时钟源 */
 0x08000D6E BF00      NOP
 0x08000D70 4809      LDR      r0,[pc,#36]  ; @0x08000D98
 0x08000D72 6E40      LDR      r0,[r0,#0x64]
 0x08000D74 2800      CMP      r0,#0x00
 0x08000D76 D0FB      BEQ      0x08000D70
 518:   bRCC_CFGR_SW0=0;       //系统时钟选择SW0位复位
 0x08000D78 2000      MOVS     r0,#0x00
 0x08000D7A 4907      LDR      r1,[pc,#28]  ; @0x08000D98
 0x08000D7C 3180      ADDS     r1,r1,#0x80
 0x08000D7E 6008      STR      r0,[r1,#0x00]
 519:   bRCC_CFGR_SW_PLL=1;    //系统时钟选择PLL(BIT1位)置1
 520:
 521:   /* 等待,直到 PLL 被用作系统时钟源 */
 0x08000D80 2001      MOVS     r0,#0x01
 0x08000D82 4905      LDR      r1,[pc,#20]  ; @0x08000D98
 0x08000D84 F8C10084  STR      r0,[r1,#0x84]
 522:   while (!bRCC_CFGR_SWS_PLL) //BIT3为1指示PLL已为钟源
 523:    {} 0x08000D88 BF00      NOP
 0x08000D8A 4803      LDR      r0,[pc,#12]  ; @0x08000D98
 0x08000D8C 308C      ADDS     r0,r0,#0x8C
 0x08000D8E 6800      LDR      r0,[r0,#0x00]
 0x08000D90 2800      CMP      r0,#0x00
 0x08000D92 D0FA      BEQ      0x08000D8A
 524: }
 |