📄 stm32f10x_rcc.txt
字号:
;;;724 /* Get PCLK1 prescaler */
;;;725 tmp = RCC->CFGR & CFGR_PPRE1_Set_Mask;
00004e 6041 STR r1,[r0,#4]
000050 6854 LDR r4,[r2,#4]
000052 f404f404 AND r4,r4,#0x700
;;;726 tmp = tmp >> 8;
000056 0a24 LSRS r4,r4,#8
;;;727 presc = APBAHBPrescTable[tmp];
000058 5d1c LDRB r4,[r3,r4]
;;;728
;;;729 /* PCLK1 clock frequency */
;;;730 RCC_Clocks->PCLK1_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
00005a fa21fa21 LSR r4,r1,r4
;;;731
;;;732 /* Get PCLK2 prescaler */
;;;733 tmp = RCC->CFGR & CFGR_PPRE2_Set_Mask;
00005e 6084 STR r4,[r0,#8]
000060 6854 LDR r4,[r2,#4]
000062 f404f404 AND r4,r4,#0x3800
;;;734 tmp = tmp >> 11;
000066 0ae4 LSRS r4,r4,#11
;;;735 presc = APBAHBPrescTable[tmp];
000068 5d1b LDRB r3,[r3,r4]
;;;736
;;;737 /* PCLK2 clock frequency */
;;;738 RCC_Clocks->PCLK2_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
00006a 40d9 LSRS r1,r1,r3
;;;739
;;;740 /* Get ADCCLK prescaler */
;;;741 tmp = RCC->CFGR & CFGR_ADCPRE_Set_Mask;
00006c 60c1 STR r1,[r0,#0xc]
00006e 6852 LDR r2,[r2,#4]
;;;742 tmp = tmp >> 14;
;;;743 presc = ADCPrescTable[tmp];
000070 4b07 LDR r3,|L21.144|
000072 f402f402 AND r2,r2,#0xc000 ;741
000076 0b92 LSRS r2,r2,#14 ;742
000078 1f1b SUBS r3,r3,#4
00007a 5c9a LDRB r2,[r3,r2]
;;;744
;;;745 /* ADCCLK clock frequency */
;;;746 RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK2_Frequency / presc;
00007c fbb1fbb1 UDIV r1,r1,r2
;;;747 }
000080 6101 STR r1,[r0,#0x10]
000082 bd30 POP {r4,r5,pc}
;;;748
ENDP
|L21.132|
000084 40021000 DCD 0x40021000
|L21.136|
000088 007a1200 DCD 0x007a1200
|L21.140|
00008c 003d0900 DCD 0x003d0900
|L21.144|
000090 00000004 DCD ||.constdata||+0x4
AREA ||i.RCC_AHBPeriphClockCmd||, CODE, READONLY, ALIGN=2
RCC_AHBPeriphClockCmd PROC
;;;767 void RCC_AHBPeriphClockCmd(u32 RCC_AHBPeriph, FunctionalState NewState)
;;;768 {
000000 4a04 LDR r2,|L22.20|
;;;769 /* Check the parameters */
;;;770 assert_param(IS_RCC_AHB_PERIPH(RCC_AHBPeriph));
;;;771 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;772
;;;773 if (NewState != DISABLE)
000002 2900 CMP r1,#0
;;;774 {
;;;775 RCC->AHBENR |= RCC_AHBPeriph;
000004 6951 LDR r1,[r2,#0x14]
000006 d001 BEQ |L22.12|
000008 4301 ORRS r1,r1,r0
00000a e000 B |L22.14|
|L22.12|
;;;776 }
;;;777 else
;;;778 {
;;;779 RCC->AHBENR &= ~RCC_AHBPeriph;
00000c 4381 BICS r1,r1,r0
|L22.14|
00000e 6151 STR r1,[r2,#0x14] ;775
;;;780 }
;;;781 }
000010 4770 BX lr
;;;782
ENDP
000012 0000 DCW 0x0000
|L22.20|
000014 40021000 DCD 0x40021000
AREA ||i.RCC_APB2PeriphClockCmd||, CODE, READONLY, ALIGN=2
RCC_APB2PeriphClockCmd PROC
;;;800 void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState)
;;;801 {
000000 4a04 LDR r2,|L23.20|
;;;802 /* Check the parameters */
;;;803 assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
;;;804 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;805
;;;806 if (NewState != DISABLE)
000002 2900 CMP r1,#0
;;;807 {
;;;808 RCC->APB2ENR |= RCC_APB2Periph;
000004 6991 LDR r1,[r2,#0x18]
000006 d001 BEQ |L23.12|
000008 4301 ORRS r1,r1,r0
00000a e000 B |L23.14|
|L23.12|
;;;809 }
;;;810 else
;;;811 {
;;;812 RCC->APB2ENR &= ~RCC_APB2Periph;
00000c 4381 BICS r1,r1,r0
|L23.14|
00000e 6191 STR r1,[r2,#0x18] ;808
;;;813 }
;;;814 }
000010 4770 BX lr
;;;815
ENDP
000012 0000 DCW 0x0000
|L23.20|
000014 40021000 DCD 0x40021000
AREA ||i.RCC_APB1PeriphClockCmd||, CODE, READONLY, ALIGN=2
RCC_APB1PeriphClockCmd PROC
;;;834 void RCC_APB1PeriphClockCmd(u32 RCC_APB1Periph, FunctionalState NewState)
;;;835 {
000000 4a04 LDR r2,|L24.20|
;;;836 /* Check the parameters */
;;;837 assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));
;;;838 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;839
;;;840 if (NewState != DISABLE)
000002 2900 CMP r1,#0
;;;841 {
;;;842 RCC->APB1ENR |= RCC_APB1Periph;
000004 69d1 LDR r1,[r2,#0x1c]
000006 d001 BEQ |L24.12|
000008 4301 ORRS r1,r1,r0
00000a e000 B |L24.14|
|L24.12|
;;;843 }
;;;844 else
;;;845 {
;;;846 RCC->APB1ENR &= ~RCC_APB1Periph;
00000c 4381 BICS r1,r1,r0
|L24.14|
00000e 61d1 STR r1,[r2,#0x1c] ;842
;;;847 }
;;;848 }
000010 4770 BX lr
;;;849
ENDP
000012 0000 DCW 0x0000
|L24.20|
000014 40021000 DCD 0x40021000
AREA ||i.RCC_APB2PeriphResetCmd||, CODE, READONLY, ALIGN=2
RCC_APB2PeriphResetCmd PROC
;;;866 void RCC_APB2PeriphResetCmd(u32 RCC_APB2Periph, FunctionalState NewState)
;;;867 {
000000 4a04 LDR r2,|L25.20|
;;;868 /* Check the parameters */
;;;869 assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
;;;870 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;871
;;;872 if (NewState != DISABLE)
000002 2900 CMP r1,#0
;;;873 {
;;;874 RCC->APB2RSTR |= RCC_APB2Periph;
000004 68d1 LDR r1,[r2,#0xc]
000006 d001 BEQ |L25.12|
000008 4301 ORRS r1,r1,r0
00000a e000 B |L25.14|
|L25.12|
;;;875 }
;;;876 else
;;;877 {
;;;878 RCC->APB2RSTR &= ~RCC_APB2Periph;
00000c 4381 BICS r1,r1,r0
|L25.14|
00000e 60d1 STR r1,[r2,#0xc] ;874
;;;879 }
;;;880 }
000010 4770 BX lr
;;;881
ENDP
000012 0000 DCW 0x0000
|L25.20|
000014 40021000 DCD 0x40021000
AREA ||i.RCC_APB1PeriphResetCmd||, CODE, READONLY, ALIGN=2
RCC_APB1PeriphResetCmd PROC
;;;899 void RCC_APB1PeriphResetCmd(u32 RCC_APB1Periph, FunctionalState NewState)
;;;900 {
000000 4a04 LDR r2,|L26.20|
;;;901 /* Check the parameters */
;;;902 assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));
;;;903 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;904
;;;905 if (NewState != DISABLE)
000002 2900 CMP r1,#0
;;;906 {
;;;907 RCC->APB1RSTR |= RCC_APB1Periph;
000004 6911 LDR r1,[r2,#0x10]
000006 d001 BEQ |L26.12|
000008 4301 ORRS r1,r1,r0
00000a e000 B |L26.14|
|L26.12|
;;;908 }
;;;909 else
;;;910 {
;;;911 RCC->APB1RSTR &= ~RCC_APB1Periph;
00000c 4381 BICS r1,r1,r0
|L26.14|
00000e 6111 STR r1,[r2,#0x10] ;907
;;;912 }
;;;913 }
000010 4770 BX lr
;;;914
ENDP
000012 0000 DCW 0x0000
|L26.20|
000014 40021000 DCD 0x40021000
AREA ||i.RCC_BackupResetCmd||, CODE, READONLY, ALIGN=2
RCC_BackupResetCmd PROC
;;;923 void RCC_BackupResetCmd(FunctionalState NewState)
;;;924 {
000000 4901 LDR r1,|L27.8|
;;;925 /* Check the parameters */
;;;926 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;927
;;;928 *(vu32 *) BDCR_BDRST_BB = (u32)NewState;
000002 6008 STR r0,[r1,#0]
;;;929 }
000004 4770 BX lr
;;;930
ENDP
000006 0000 DCW 0x0000
|L27.8|
000008 42420440 DCD 0x42420440
AREA ||i.RCC_ClockSecuritySystemCmd||, CODE, READONLY, ALIGN=2
RCC_ClockSecuritySystemCmd PROC
;;;943
;;;944 *(vu32 *) CR_CSSON_BB = (u32)NewState;
000000 4901 LDR r1,|L28.8|
000002 64c8 STR r0,[r1,#0x4c]
;;;945 }
000004 4770 BX lr
;;;946
ENDP
000006 0000 DCW 0x0000
|L28.8|
000008 42420000 DCD 0x42420000
AREA ||i.RCC_MCOConfig||, CODE, READONLY, ALIGN=2
RCC_MCOConfig PROC
;;;965 /* Perform Byte access to MCO[2:0] bits to select the MCO source */
;;;966 *(vu8 *) CFGR_BYTE4_ADDRESS = RCC_MCO;
000000 4901 LDR r1,|L29.8|
000002 71c8 STRB r0,[r1,#7]
;;;967 }
000004 4770 BX lr
;;;968
ENDP
000006 0000 DCW 0x0000
|L29.8|
000008 40021000 DCD 0x40021000
AREA ||i.RCC_ClearFlag||, CODE, READONLY, ALIGN=2
RCC_ClearFlag PROC
;;;1041 /* Set RMVF bit to clear the reset flags */
;;;1042 RCC->CSR |= CSR_RMVF_Set;
000000 4802 LDR r0,|L30.12|
000002 6a41 LDR r1,[r0,#0x24]
000004 f041f041 ORR r1,r1,#0x1000000
000008 6241 STR r1,[r0,#0x24]
;;;1043 }
00000a 4770 BX lr
;;;1044
ENDP
|L30.12|
00000c 40021000 DCD 0x40021000
AREA ||i.RCC_GetITStatus||, CODE, READONLY, ALIGN=2
RCC_GetITStatus PROC
;;;1066 /* Check the status of the specified RCC interrupt */
;;;1067 if ((RCC->CIR & RCC_IT) != (u32)RESET)
000000 4903 LDR r1,|L31.16|
000002 4602 MOV r2,r0
000004 6889 LDR r1,[r1,#8]
000006 2000 MOVS r0,#0
000008 4211 TST r1,r2
00000a d000 BEQ |L31.14|
;;;1068 {
;;;1069 bitstatus = SET;
00000c 2001 MOVS r0,#1
|L31.14|
;;;1070 }
;;;1071 else
;;;1072 {
;;;1073 bitstatus = RESET;
;;;1074 }
;;;1075
;;;1076 /* Return the RCC_IT status */
;;;1077 return bitstatus;
;;;1078 }
00000e 4770 BX lr
;;;1079
ENDP
|L31.16|
000010 40021000 DCD 0x40021000
AREA ||i.RCC_ClearITPendingBit||, CODE, READONLY, ALIGN=2
RCC_ClearITPendingBit PROC
;;;1100 pending bits */
;;;1101 *(vu8 *) CIR_BYTE3_ADDRESS = RCC_IT;
000000 4901 LDR r1,|L32.8|
000002 7288 STRB r0,[r1,#0xa]
;;;1102 }
000004 4770 BX lr
;;;1103
ENDP
000006 0000 DCW 0x0000
|L32.8|
000008 40021000 DCD 0x40021000
AREA ||.data||, DATA, ALIGN=2
HSEStatus
000000 00000000 DCB 0x00,0x00,0x00,0x00
StartUpCounter
000004 00000000 DCD 0x00000000
AREA ||.constdata||, DATA, READONLY, ALIGN=0
ADCPrescTable
000000 02040608 DCB 0x02,0x04,0x06,0x08
APBAHBPrescTable
000004 00000000 DCB 0x00,0x00,0x00,0x00
000008 01020304 DCB 0x01,0x02,0x03,0x04
00000c 01020304 DCB 0x01,0x02,0x03,0x04
000010 06070809 DCB 0x06,0x07,0x08,0x09
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -