📄 pmc.lst
字号:
103
104 if ((AT91C_BASE_PMC->PMC_PCSR & (1 << id)) == (1 << id)) {
\ ??PMC_EnablePeripheral_0:
\ 00000028 E710E0E3 MVN R1,#+231
\ 0000002C C01FC1E3 BIC R1,R1,#0x300
\ 00000030 001091E5 LDR R1,[R1, #+0]
\ 00000034 0120A0E3 MOV R2,#+1
\ 00000038 121001E0 AND R1,R1,R2, LSL R0
\ 0000003C 120051E1 CMP R1,R2, LSL R0
\ 00000040 1200A011 LSLNE R0,R2,R0
\ 00000044 EF10E013 MVNNE R1,#+239
\ 00000048 C01FC113 BICNE R1,R1,#0x300
\ 0000004C 00008115 STRNE R0,[R1, #+0]
105
106 TRACE_INFO("PMC_EnablePeripheral: clock of peripheral"
107 " %u is already enabled\n\r",
108 id);
\ 00000050 0010A001 MOVEQ R1,R0
\ 00000054 08009F05 LDREQ R0,??PMC_EnablePeripheral_2 ;; `?<Constant "-I- PMC_EnablePeriphe...">`
\ 00000058 ........ BLEQ printf
109 }
110 else {
111
112 AT91C_BASE_PMC->PMC_PCER = 1 << id;
113 }
114 }
\ 0000005C 0140BDE8 POP {R0,LR}
\ 00000060 1EFF2FE1 BX LR ;; return
\ ??PMC_EnablePeripheral_2:
\ 00000064 ........ DC32 `?<Constant "-I- PMC_EnablePeriphe...">`
115
116 //------------------------------------------------------------------------------
117 /// Disables the clock of a peripheral. The peripheral ID (AT91C_ID_xxx) is used
118 /// to identify which peripheral is targetted.
119 /// Note that the ID must NOT be shifted (i.e. 1 << AT91C_ID_xxx).
120 /// \param id Peripheral ID (AT91C_ID_xxx).
121 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
122 void PMC_DisablePeripheral(unsigned int id)
123 {
\ PMC_DisablePeripheral:
\ 00000000 00502DE9 PUSH {R12,LR}
124 SANITY_CHECK(id < 32);
\ 00000004 200050E3 CMP R0,#+32
\ 00000008 0600003A BCC ??PMC_DisablePeripheral_0
\ 0000000C ........ LDR R0,??DataTable3 ;; `?<Constant "-F- ASSERT: ">`
\ 00000010 ........ BL printf
\ 00000014 7C20A0E3 MOV R2,#+124
\ 00000018 ........ LDR R1,??DataTable4 ;; `?<Constant "F:\\\\Diplomovka\\\\Atmel\\\\g...">`
\ 0000001C ........ LDR R0,??DataTable5 ;; `?<Constant "Sanity check failed a...">`
\ 00000020 ........ BL printf
\ ??PMC_DisablePeripheral_1:
\ 00000024 FEFFFFEA B ??PMC_DisablePeripheral_1
125
126 if ((AT91C_BASE_PMC->PMC_PCSR & (1 << id)) != (1 << id)) {
\ ??PMC_DisablePeripheral_0:
\ 00000028 E710E0E3 MVN R1,#+231
\ 0000002C C01FC1E3 BIC R1,R1,#0x300
\ 00000030 001091E5 LDR R1,[R1, #+0]
\ 00000034 0120A0E3 MOV R2,#+1
\ 00000038 121001E0 AND R1,R1,R2, LSL R0
\ 0000003C 120051E1 CMP R1,R2, LSL R0
\ 00000040 1200A001 LSLEQ R0,R2,R0
\ 00000044 EB10E003 MVNEQ R1,#+235
\ 00000048 C01FC103 BICEQ R1,R1,#0x300
\ 0000004C 00008105 STREQ R0,[R1, #+0]
127
128 TRACE_INFO("PMC_DisablePeripheral: clock of peripheral"
129 " %u is not enabled\n\r",
130 id);
\ 00000050 0010A011 MOVNE R1,R0
\ 00000054 08009F15 LDRNE R0,??PMC_DisablePeripheral_2 ;; `?<Constant "-I- PMC_DisablePeriph...">`
\ 00000058 ........ BLNE printf
131 }
132 else {
133
134 AT91C_BASE_PMC->PMC_PCDR = 1 << id;
135 }
136 }
\ 0000005C 0140BDE8 POP {R0,LR}
\ 00000060 1EFF2FE1 BX LR ;; return
\ ??PMC_DisablePeripheral_2:
\ 00000064 ........ DC32 `?<Constant "-I- PMC_DisablePeriph...">`
137
138 //------------------------------------------------------------------------------
139 /// Enable all the periph clock via PMC
140 /// (Becareful of the last 2 bits, it is not periph clock)
141 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
142 void PMC_EnableAllPeripherals(void)
143 {
144 AT91C_BASE_PMC->PMC_PCER = MASK_STATUS;
\ PMC_EnableAllPeripherals:
\ 00000000 EF00E0E3 MVN R0,#+239
\ 00000004 C00FC0E3 BIC R0,R0,#0x300
\ 00000008 F013E0E3 MVN R1,#-1073741821
\ 0000000C 001080E5 STR R1,[R0, #+0]
145 while( (AT91C_BASE_PMC->PMC_PCSR & MASK_STATUS) != MASK_STATUS);
\ ??PMC_EnableAllPeripherals_0:
\ 00000010 E700E0E3 MVN R0,#+231
\ 00000014 C00FC0E3 BIC R0,R0,#0x300
\ 00000018 000090E5 LDR R0,[R0, #+0]
\ 0000001C F003C0E3 BIC R0,R0,#0xC0000003
\ 00000020 010050E1 CMP R0,R1
\ 00000024 F9FFFF1A BNE ??PMC_EnableAllPeripherals_0
146 TRACE_INFO("Enable all periph clocks\n\r");
\ 00000028 00009FE5 LDR R0,??PMC_EnableAllPeripherals_1 ;; `?<Constant "-I- Enable all periph...">`
\ 0000002C ........ B printf ;; tailcall
\ ??PMC_EnableAllPeripherals_1:
\ 00000030 ........ DC32 `?<Constant "-I- Enable all periph...">`
147 }
148
149 //------------------------------------------------------------------------------
150 /// Disable all the periph clock via PMC
151 /// (Becareful of the last 2 bits, it is not periph clock)
152 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
153 void PMC_DisableAllPeripherals(void)
154 {
155 AT91C_BASE_PMC->PMC_PCDR = MASK_STATUS;
\ PMC_DisableAllPeripherals:
\ 00000000 EB00E0E3 MVN R0,#+235
\ 00000004 C00FC0E3 BIC R0,R0,#0x300
\ 00000008 F013E0E3 MVN R1,#-1073741821
\ 0000000C 001080E5 STR R1,[R0, #+0]
156 while((AT91C_BASE_PMC->PMC_PCSR & MASK_STATUS) != 0);
\ ??PMC_DisableAllPeripherals_0:
\ 00000010 E700E0E3 MVN R0,#+231
\ 00000014 C00FC0E3 BIC R0,R0,#0x300
\ 00000018 000090E5 LDR R0,[R0, #+0]
\ 0000001C F003D0E3 BICS R0,R0,#0xC0000003
\ 00000020 FAFFFF1A BNE ??PMC_DisableAllPeripherals_0
157 TRACE_INFO("Disable all periph clocks\n\r");
\ 00000024 00009FE5 LDR R0,??PMC_DisableAllPeripherals_1 ;; `?<Constant "-I- Disable all perip...">`
\ 00000028 ........ B printf ;; tailcall
\ ??PMC_DisableAllPeripherals_1:
\ 0000002C ........ DC32 `?<Constant "-I- Disable all perip...">`
158 }
159
160 //-----------------------------------------------------------------------------
161 /// Get Periph Status
162 //-----------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
163 unsigned int PMC_IsAllPeriphEnabled(void)
164 {
165 return (AT91C_BASE_PMC->PMC_PCSR == MASK_STATUS);
\ PMC_IsAllPeriphEnabled:
\ 00000000 E700E0E3 MVN R0,#+231
\ 00000004 C00FC0E3 BIC R0,R0,#0x300
\ 00000008 000090E5 LDR R0,[R0, #+0]
\ 0000000C F013E0E3 MVN R1,#-1073741821
\ 00000010 010050E1 CMP R0,R1
\ 00000014 0100A003 MOVEQ R0,#+1
\ 00000018 0000A013 MOVNE R0,#+0
\ 0000001C 1EFF2FE1 BX LR ;; return
166 }
167
168 //-----------------------------------------------------------------------------
169 /// Get Periph Status
170 //-----------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
171 unsigned int PMC_IsPeriphEnabled(unsigned int id)
172 {
173 return (AT91C_BASE_PMC->PMC_PCSR & (1 << id));
\ PMC_IsPeriphEnabled:
\ 00000000 E710E0E3 MVN R1,#+231
\ 00000004 C01FC1E3 BIC R1,R1,#0x300
\ 00000008 001091E5 LDR R1,[R1, #+0]
\ 0000000C 0120A0E3 MOV R2,#+1
\ 00000010 120001E0 AND R0,R1,R2, LSL R0
\ 00000014 1EFF2FE1 BX LR ;; return
174 }
175 //------------------------------------------------------------------------------
176 /// Put the CPU in Idle Mode for lower consumption
177 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
178 void PMC_CPUInIdleMode(void)
179 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -