📄 pio_it.lst
字号:
\ ??PioInterruptHandler_0:
\ 000000B0 F180BDE8 POP {R0,R4-R7,PC} ;; return
128
129 //------------------------------------------------------------------------------
130 /// Generic PIO interrupt handler. Single entry point for interrupts coming
131 /// from any PIO controller (PIO A, B, C ...). Dispatches the interrupt to
132 /// the user-configured handlers.
133 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
134 void InterruptHandler()
135 {
\ InterruptHandler:
\ 00000000 00502DE9 PUSH {R12,LR}
136 #if defined(AT91C_ID_PIOA)
137 // Treat PIOA interrupts
138 PioInterruptHandler(AT91C_ID_PIOA, AT91C_BASE_PIOA);
\ 00000004 FF10E0E3 MVN R1,#+255
\ 00000008 B01EC1E3 BIC R1,R1,#0xB00
\ 0000000C 0200A0E3 MOV R0,#+2
\ 00000010 ........ BL PioInterruptHandler
139 #endif
140
141 #if defined(AT91C_ID_PIOB)
142 // Treat PIOB interrupts
143 PioInterruptHandler(AT91C_ID_PIOB, AT91C_BASE_PIOB);
\ 00000014 FF10E0E3 MVN R1,#+255
\ 00000018 901EC1E3 BIC R1,R1,#0x900
\ 0000001C 0300A0E3 MOV R0,#+3
\ 00000020 ........ BL PioInterruptHandler
144 #endif
145
146 #if defined(AT91C_ID_PIOC)
147 // Treat PIOC interrupts
148 PioInterruptHandler(AT91C_ID_PIOC, AT91C_BASE_PIOC);
\ 00000024 FF10E0E3 MVN R1,#+255
\ 00000028 701EC1E3 BIC R1,R1,#0x700
\ 0000002C 0400A0E3 MOV R0,#+4
\ 00000030 ........ BL PioInterruptHandler
149 #endif
150
151 #if defined(AT91C_ID_PIOD)
152 // Treat PIOD interrupts
153 PioInterruptHandler(AT91C_ID_PIOD, AT91C_BASE_PIOD);
154 #endif
155
156 #if defined(AT91C_ID_PIOE)
157 // Treat PIOE interrupts
158 PioInterruptHandler(AT91C_ID_PIOE, AT91C_BASE_PIOE);
159 #endif
160
161 #if defined(AT91C_ID_PIOABCD)
162 // Treat PIOABCD interrupts
163 #if !defined(AT91C_ID_PIOA)
164 PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOA);
165 #endif
166 #if !defined(AT91C_ID_PIOB)
167 PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOB);
168 #endif
169 #if !defined(AT91C_ID_PIOC)
170 PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOC);
171 #endif
172 #if !defined(AT91C_ID_PIOD)
173 PioInterruptHandler(AT91C_ID_PIOABCD, AT91C_BASE_PIOD);
174 #endif
175 #endif
176
177 #if defined(AT91C_ID_PIOABCDE)
178 // Treat PIOABCDE interrupts
179 #if !defined(AT91C_ID_PIOA)
180 PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOA);
181 #endif
182 #if !defined(AT91C_ID_PIOB)
183 PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOB);
184 #endif
185 #if !defined(AT91C_ID_PIOC)
186 PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOC);
187 #endif
188 #if !defined(AT91C_ID_PIOD)
189 PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOD);
190 #endif
191 #if !defined(AT91C_ID_PIOE)
192 PioInterruptHandler(AT91C_ID_PIOABCDE, AT91C_BASE_PIOE);
193 #endif
194 #endif
195
196 #if defined(AT91C_ID_PIOCDE)
197 // Treat PIOCDE interrupts
198 #if !defined(AT91C_ID_PIOC)
199 PioInterruptHandler(AT91C_ID_PIOCDE, AT91C_BASE_PIOC);
200 #endif
201 #if !defined(AT91C_ID_PIOD)
202 PioInterruptHandler(AT91C_ID_PIOCDE, AT91C_BASE_PIOD);
203 #endif
204 #if !defined(AT91C_ID_PIOE)
205 PioInterruptHandler(AT91C_ID_PIOCDE, AT91C_BASE_PIOE);
206 #endif
207 #endif
208
209 }
\ 00000034 0180BDE8 POP {R0,PC} ;; return
210
211 //------------------------------------------------------------------------------
212 // Global functions
213 //------------------------------------------------------------------------------
214
215 //------------------------------------------------------------------------------
216 /// Initializes the PIO interrupt management logic.
217 /// \param priority PIO controller interrupts priority.
218 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
219 void PIO_InitializeInterrupts(unsigned int priority)
220 {
\ PIO_InitializeInterrupts:
\ 00000000 F8402DE9 PUSH {R3-R7,LR}
\ 00000004 0040B0E1 MOVS R4,R0
221 trace_LOG(trace_DEBUG, "-D- PIO_Initialize()\n\r");
222
223 SANITY_CHECK((priority & ~AT91C_AIC_PRIOR) == 0);
224
225 // Reset sources
226 numSources = 0;
\ 00000008 ........ LDR R0,??DataTable10 ;; numSources
\ 0000000C 0010A0E3 MOV R1,#+0
\ 00000010 001080E5 STR R1,[R0, #+0]
227
228 #ifdef AT91C_ID_PIOA
229 // Configure PIO interrupt sources
230 trace_LOG(trace_DEBUG, "-D- PIO_Initialize: Configuring PIOA\n\r");
231 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOA;
\ 00000014 EF00E0E3 MVN R0,#+239
\ 00000018 C00FC0E3 BIC R0,R0,#0x300
\ 0000001C 0410A0E3 MOV R1,#+4
\ 00000020 001080E5 STR R1,[R0, #+0]
232 AT91C_BASE_PIOA->PIO_ISR;
\ 00000024 B300E0E3 MVN R0,#+179
\ 00000028 B00EC0E3 BIC R0,R0,#0xB00
\ 0000002C 005090E5 LDR R5,[R0, #+0]
233 AT91C_BASE_PIOA->PIO_IDR = 0xFFFFFFFF;
\ 00000030 BB00E0E3 MVN R0,#+187
\ 00000034 B00EC0E3 BIC R0,R0,#0xB00
\ 00000038 0010E0E3 MVN R1,#+0
\ 0000003C 001080E5 STR R1,[R0, #+0]
234 AIC_ConfigureIT(AT91C_ID_PIOA, priority, InterruptHandler);
\ 00000040 9C209FE5 LDR R2,??PIO_InitializeInterrupts_0 ;; InterruptHandler
\ 00000044 0410B0E1 MOVS R1,R4
\ 00000048 0200A0E3 MOV R0,#+2
\ 0000004C ........ BL AIC_ConfigureIT
235 AIC_EnableIT(AT91C_ID_PIOA);
\ 00000050 0200A0E3 MOV R0,#+2
\ 00000054 ........ BL AIC_EnableIT
236 #endif
237
238 #ifdef AT91C_ID_PIOB
239 trace_LOG(trace_DEBUG, "-D- PIO_Initialize: Configuring PIOB\n\r");
240 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOB;
\ 00000058 EF00E0E3 MVN R0,#+239
\ 0000005C C00FC0E3 BIC R0,R0,#0x300
\ 00000060 0810A0E3 MOV R1,#+8
\ 00000064 001080E5 STR R1,[R0, #+0]
241 AT91C_BASE_PIOB->PIO_ISR;
\ 00000068 B300E0E3 MVN R0,#+179
\ 0000006C 900EC0E3 BIC R0,R0,#0x900
\ 00000070 006090E5 LDR R6,[R0, #+0]
242 AT91C_BASE_PIOB->PIO_IDR = 0xFFFFFFFF;
\ 00000074 BB00E0E3 MVN R0,#+187
\ 00000078 900EC0E3 BIC R0,R0,#0x900
\ 0000007C 0010E0E3 MVN R1,#+0
\ 00000080 001080E5 STR R1,[R0, #+0]
243 AIC_ConfigureIT(AT91C_ID_PIOB, priority, InterruptHandler);
\ 00000084 58209FE5 LDR R2,??PIO_InitializeInterrupts_0 ;; InterruptHandler
\ 00000088 0410B0E1 MOVS R1,R4
\ 0000008C 0300A0E3 MOV R0,#+3
\ 00000090 ........ BL AIC_ConfigureIT
244 AIC_EnableIT(AT91C_ID_PIOB);
\ 00000094 0300A0E3 MOV R0,#+3
\ 00000098 ........ BL AIC_EnableIT
245 #endif
246
247 #ifdef AT91C_ID_PIOC
248 trace_LOG(trace_DEBUG, "-D- PIO_Initialize: Configuring PIOC\n\r");
249 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOC;
\ 0000009C EF00E0E3 MVN R0,#+239
\ 000000A0 C00FC0E3 BIC R0,R0,#0x300
\ 000000A4 1010A0E3 MOV R1,#+16
\ 000000A8 001080E5 STR R1,[R0, #+0]
250 AT91C_BASE_PIOC->PIO_ISR;
\ 000000AC B300E0E3 MVN R0,#+179
\ 000000B0 700EC0E3 BIC R0,R0,#0x700
\ 000000B4 007090E5 LDR R7,[R0, #+0]
251 AT91C_BASE_PIOC->PIO_IDR = 0xFFFFFFFF;
\ 000000B8 BB00E0E3 MVN R0,#+187
\ 000000BC 700EC0E3 BIC R0,R0,#0x700
\ 000000C0 0010E0E3 MVN R1,#+0
\ 000000C4 001080E5 STR R1,[R0, #+0]
252 AIC_ConfigureIT(AT91C_ID_PIOC, priority, InterruptHandler);
\ 000000C8 14209FE5 LDR R2,??PIO_InitializeInterrupts_0 ;; InterruptHandler
\ 000000CC 0410B0E1 MOVS R1,R4
\ 000000D0 0400A0E3 MOV R0,#+4
\ 000000D4 ........ BL AIC_ConfigureIT
253 AIC_EnableIT(AT91C_ID_PIOC);
\ 000000D8 0400A0E3 MOV R0,#+4
\ 000000DC ........ BL AIC_EnableIT
254 #endif
255
256 #ifdef AT91C_ID_PIOD
257 trace_LOG(trace_DEBUG, "-D- PIO_Initialize: Configuring PIOD\n\r");
258 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOD;
259 AT91C_BASE_PIOC->PIO_ISR;
260 AT91C_BASE_PIOC->PIO_IDR = 0xFFFFFFFF;
261 AIC_ConfigureIT(AT91C_ID_PIOD, priority, InterruptHandler);
262 AIC_EnableIT(AT91C_ID_PIOD);
263 #endif
264
265 #ifdef AT91C_ID_PIOE
266 trace_LOG(trace_DEBUG, "-D- PIO_Initialize: Configuring PIOE\n\r");
267 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_PIOE;
268 AT91C_BASE_PIOC->PIO_ISR;
269 AT91C_BASE_PIOC->PIO_IDR = 0xFFFFFFFF;
270 AIC_ConfigureIT(AT91C_ID_PIOE, priority, InterruptHandler);
271 AIC_EnableIT(AT91C_ID_PIOE);
272 #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -