📄 rccu.lst
字号:
\ 00000042 1860 STR R0,[R3, #+0]
70 break;}
\ 00000044 1AE0 B ??RCCU_RCLKSourceConfig_4
71 case RCCU_CLOCK2_16 :{// ReSet the CK2_16 Bit in the CFR
72 RCCU->CFR &= ~RCCU_CK2_16_Mask;
\ ??RCCU_RCLKSourceConfig_1:
\ 00000046 2868 LDR R0,[R5, #+0]
\ 00000048 A043 BIC R0,R4
\ 0000004A 2860 STR R0,[R5, #+0]
73 // Deselect The CKAF
74 RCCU->CCR &= ~RCCU_CKAF_SEL_Mask;
\ 0000004C F2E7 B ??RCCU_RCLKSourceConfig_5
75 // switch off the PLL1
76 RCCU->PLL1CR=((RCCU->PLL1CR & ~RCCU_DX_Mask)\
77 |0x00000003) & ~RCCU_FREEN_Mask;
78 break;}
79 case RCCU_PLL1_Output:{// Set the CK2_16 Bit in the CFR
80 RCCU->CFR = RCCU->CFR | RCCU_CK2_16_Mask;
\ ??RCCU_RCLKSourceConfig_0:
\ 0000004E 2868 LDR R0,[R5, #+0]
\ 00000050 0443 ORR R4,R0
\ 00000052 2C60 STR R4,[R5, #+0]
81 // Waits the PLL1 to lock if DX bits are different from '111'
82 // If all DX bit are set the PLL lock flag in meaningless
83 if (( RCCU->PLL1CR & 0x0007 ) != 7)
\ 00000054 1868 LDR R0,[R3, #+0]
\ 00000056 4007 LSL R0,R0,#+0x1D
\ 00000058 400F LSR R0,R0,#+0x1D
\ 0000005A 0728 CMP R0,#+0x7
\ 0000005C 02D0 BEQ ??RCCU_RCLKSourceConfig_6
84 while(!(RCCU->CFR & RCCU_LOCK_Mask));
\ ??RCCU_RCLKSourceConfig_7:
\ 0000005E 2868 LDR R0,[R5, #+0]
\ 00000060 8007 LSL R0,R0,#+0x1E
\ 00000062 FCD5 BPL ??RCCU_RCLKSourceConfig_7
85 // Deselect The CKAF
86 RCCU->CCR &= ~RCCU_CKAF_SEL_Mask;
\ ??RCCU_RCLKSourceConfig_6:
\ 00000064 3068 LDR R0,[R6, #+0]
\ 00000066 0240 AND R2,R0
\ 00000068 3260 STR R2,[R6, #+0]
87 // Select The CSU_CKSEL
88 RCCU->CFR |= RCCU_CSU_CKSEL_Mask;
\ 0000006A 2868 LDR R0,[R5, #+0]
\ 0000006C 0121 MOV R1,#+0x1
\ 0000006E 0143 ORR R1,R0
\ 00000070 2960 STR R1,[R5, #+0]
89 break;}
\ 00000072 03E0 B ??RCCU_RCLKSourceConfig_4
90 case RCCU_RTC_CLOCK : {RCCU->CCR |= 0x04;
\ ??RCCU_RCLKSourceConfig_3:
\ 00000074 3068 LDR R0,[R6, #+0]
\ 00000076 0421 MOV R1,#+0x4
\ 00000078 0143 ORR R1,R0
\ 0000007A 3160 STR R1,[R6, #+0]
91 break;}
92 }
93 }
\ ??RCCU_RCLKSourceConfig_4:
\ 0000007C F0BC POP {R4-R7}
\ 0000007E 00B0 ADD SP,#+0
\ 00000080 7047 BX LR ;; return
94
95 /*******************************************************************************
96 * Function Name : RCCU_RCLKClockSource
97 * Description : Returns the current RCLK source clock
98 * Input : None
99 * Return : RCCU_PLL1_Output, RCCU_CLOCK2_16, RCCU_CLOCK2, RCCU_RTC_CLOCK
100 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
101 RCCU_RCLK_Clocks RCCU_RCLKClockSource ( void )
102 {
103 if ((RCCU->CCR & 0x04)==0x04)
\ RCCU_RCLKClockSource:
\ 00000000 A020 MOV R0,#+0xA0
\ 00000002 0006 LSL R0,R0,#+0x18 ;; #-1610612736
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 4007 LSL R0,R0,#+0x1D
\ 00000008 01D5 BPL ??RCCU_RCLKClockSource_0
104 return RCCU_RTC_CLOCK;
\ 0000000A 0320 MOV R0,#+0x3
\ 0000000C 0BE0 B ??RCCU_RCLKClockSource_1
105
106 else if ((RCCU->CFR & RCCU_CK2_16_Mask)==0)
\ ??RCCU_RCLKClockSource_0:
\ 0000000E .... LDR R0,??DataTable6 ;; 0xa0000008
\ 00000010 0168 LDR R1,[R0, #+0]
\ 00000012 0907 LSL R1,R1,#+0x1C
\ 00000014 01D4 BMI ??RCCU_RCLKClockSource_2
107 return RCCU_CLOCK2_16;
\ 00000016 0120 MOV R0,#+0x1
\ 00000018 05E0 B ??RCCU_RCLKClockSource_1
108
109 else if (RCCU->CFR & RCCU_CSU_CKSEL_Mask)
\ ??RCCU_RCLKClockSource_2:
\ 0000001A 0068 LDR R0,[R0, #+0]
\ 0000001C C007 LSL R0,R0,#+0x1F
\ 0000001E 01D5 BPL ??RCCU_RCLKClockSource_3
110 return RCCU_PLL1_Output;
\ 00000020 0020 MOV R0,#+0
\ 00000022 00E0 B ??RCCU_RCLKClockSource_1
111
112 else
113 return RCCU_CLOCK2;
\ ??RCCU_RCLKClockSource_3:
\ 00000024 0220 MOV R0,#+0x2
\ ??RCCU_RCLKClockSource_1:
\ 00000026 00B0 ADD SP,#+0
\ 00000028 7047 BX LR ;; return
114 }
115
116 /*******************************************************************************
117 * Function Name : RCCU_USBClockSource
118 * Description : Gets the RCLK source clock
119 * Input : None
120 * Return : RCCU_USB_Clocks ( RCCU_PLL2_Output, RCCU_USBCK )
121 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
122 RCCU_USB_Clocks RCCU_USBClockSource ( void )
123 {
124 if ((PCU->PLL2CR & RCCU_USBEN_Mask ) >> RCCU_USBEN_Index == 1 )
\ RCCU_USBClockSource:
\ 00000000 .... LDR R0,??DataTable5 ;; 0xa000004c
\ 00000002 0088 LDRH R0,[R0, #+0]
\ 00000004 8021 MOV R1,#+0x80
\ 00000006 4900 LSL R1,R1,#+0x1 ;; #+0x100
\ 00000008 0140 AND R1,R0
\ 0000000A 0812 ASR R0,R1,#+0x8
\ 0000000C 0128 CMP R0,#+0x1
\ 0000000E 01D1 BNE ??RCCU_USBClockSource_0
125 return RCCU_PLL2_Output;
\ 00000010 0120 MOV R0,#+0x1
\ 00000012 00E0 B ??RCCU_USBClockSource_1
126 else return RCCU_USBCK;
\ ??RCCU_USBClockSource_0:
\ 00000014 0020 MOV R0,#+0
\ ??RCCU_USBClockSource_1:
\ 00000016 00B0 ADD SP,#+0
\ 00000018 7047 BX LR ;; return
127 }
128
129 /*******************************************************************************
130 * Function Name : RCCU_FrequencyValue
131 * Description : Calculates & Returns any internal RCCU clock frequency
132 * passed in parametres
133 * Input : RCCU_Clocks ( RCCU_CLK2, RCCU_RCLK, RCCU_MCLK, RCCU_PCLK, RCCU_FCLK )
134 * Return : u32
135 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
136 u32 RCCU_FrequencyValue ( RCCU_Clocks Internal_Clk )
137 {
\ RCCU_FrequencyValue:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
138 u32 Tmp;
139 u8 Div, Mul;
140 RCCU_RCLK_Clocks CurrentRCLK;
141
142 Tmp = ( RCCU_Div2Status() == SET )? RCCU_Main_Osc / 2 : RCCU_Main_Osc;
\ 00000002 .... LDR R0,??DataTable6 ;; 0xa0000008
\ 00000004 0068 LDR R0,[R0, #+0]
\ 00000006 0004 LSL R0,R0,#+0x10
\ 00000008 01D5 BPL ??RCCU_FrequencyValue_0
\ 0000000A 2D4C LDR R4,??RCCU_FrequencyValue_1 ;; 0x1e8480
\ 0000000C 00E0 B ??RCCU_FrequencyValue_2
\ ??RCCU_FrequencyValue_0:
\ 0000000E 2D4C LDR R4,??RCCU_FrequencyValue_1+0x4 ;; 0x3d0900
143
144 if ( Internal_Clk == RCCU_CLK2 )
\ ??RCCU_FrequencyValue_2:
\ 00000010 0127 MOV R7,#+0x1
\ 00000012 6846 MOV R0,SP
\ 00000014 0078 LDRB R0,[R0, #+0]
\ 00000016 0028 CMP R0,#+0
\ 00000018 02D1 BNE ??RCCU_FrequencyValue_3
145 {
146 Div = 1;
\ ??RCCU_FrequencyValue_4:
\ 0000001A 0125 MOV R5,#+0x1
147 Mul = 1;
\ 0000001C 3E1C MOV R6,R7
\ 0000001E 2AE0 B ??RCCU_FrequencyValue_5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -