📄 stm32f10x_dma.lst
字号:
227 void DMA_Cmd(DMA_Channel_TypeDef* DMA_Channelx, FunctionalState NewState)
228 {
229 /* Check the parameters */
230 assert_param(IS_FUNCTIONAL_STATE(NewState));
231
232 if (NewState != DISABLE)
\ DMA_Cmd:
\ 00000000 C9B2 UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000002 0029 CMP R1,#+0
\ 00000004 04D0 BEQ.N ??DMA_Cmd_0
233 {
234 /* Enable the selected DMA Channelx */
235 DMA_Channelx->CCR |= CCR_ENABLE_Set;
\ 00000006 0268 LDR R2,[R0, #+0]
\ 00000008 52F00102 ORRS R2,R2,#0x1
\ 0000000C 0260 STR R2,[R0, #+0]
\ 0000000E 03E0 B.N ??DMA_Cmd_1
236 }
237 else
238 {
239 /* Disable the selected DMA Channelx */
240 DMA_Channelx->CCR &= CCR_ENABLE_Reset;
\ ??DMA_Cmd_0:
\ 00000010 0268 LDR R2,[R0, #+0]
\ 00000012 0123 MOVS R3,#+1
\ 00000014 9A43 BICS R2,R2,R3
\ 00000016 0260 STR R2,[R0, #+0]
241 }
242 }
\ ??DMA_Cmd_1:
\ 00000018 7047 BX LR ;; return
243
244 /*******************************************************************************
245 * Function Name : DMA_ITConfig
246 * Description : Enables or disables the specified DMA Channelx interrupts.
247 * Input : - DMA_IT: specifies the DMA interrupts sources to be enabled
248 * or disabled.
249 * This parameter can be any combination of the following values:
250 * - DMA_IT_TC: Transfer complete interrupt mask
251 * - DMA_IT_HT: Half transfer interrupt mask
252 * - DMA_IT_TE: Transfer error interrupt mask
253 * - NewState: new state of the specified DMA interrupts.
254 * This parameter can be: ENABLE or DISABLE.
255 * Output : None
256 * Return : None
257 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
258 void DMA_ITConfig(DMA_Channel_TypeDef* DMA_Channelx, u32 DMA_IT, FunctionalState NewState)
259 {
260 /* Check the parameters */
261 assert_param(IS_DMA_CONFIG_IT(DMA_IT));
262 assert_param(IS_FUNCTIONAL_STATE(NewState));
263
264 if (NewState != DISABLE)
\ DMA_ITConfig:
\ 00000000 D2B2 UXTB R2,R2 ;; ZeroExtS R2,R2,#+24,#+24
\ 00000002 002A CMP R2,#+0
\ 00000004 03D0 BEQ.N ??DMA_ITConfig_0
265 {
266 /* Enable the selected DMA interrupts */
267 DMA_Channelx->CCR |= DMA_IT;
\ 00000006 0368 LDR R3,[R0, #+0]
\ 00000008 0B43 ORRS R3,R3,R1
\ 0000000A 0360 STR R3,[R0, #+0]
\ 0000000C 02E0 B.N ??DMA_ITConfig_1
268 }
269 else
270 {
271 /* Disable the selected DMA interrupts */
272 DMA_Channelx->CCR &= ~DMA_IT;
\ ??DMA_ITConfig_0:
\ 0000000E 0368 LDR R3,[R0, #+0]
\ 00000010 8B43 BICS R3,R3,R1
\ 00000012 0360 STR R3,[R0, #+0]
273 }
274 }
\ ??DMA_ITConfig_1:
\ 00000014 7047 BX LR ;; return
275
276 /*******************************************************************************
277 * Function Name : DMA_GetCurrDataCounter
278 * Description : Returns the number of remaining data units in the current
279 * DMA Channelx transfer.
280 * Input : - DMA_Channelx: where x can be 1, 2 to 7 to select the DMA
281 * Channel.
282 * Output : None
283 * Return : The number of remaining data units in the current DMA Channel
284 * transfer..
285 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
286 u16 DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMA_Channelx)
287 {
288 /* Return the current memory address value for Channelx */
289 return ((u16)(DMA_Channelx->CNDTR));
\ DMA_GetCurrDataCounter:
\ 00000000 4068 LDR R0,[R0, #+4]
\ 00000002 80B2 UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
\ 00000004 7047 BX LR ;; return
290 }
291
292 /*******************************************************************************
293 * Function Name : DMA_GetFlagStatus
294 * Description : Checks whether the specified DMA Channelx flag is set or not.
295 * Input : - DMA_FLAG: specifies the flag to check.
296 * This parameter can be one of the following values:
297 * - DMA_FLAG_GL1: Channel1 global flag.
298 * - DMA_FLAG_TC1: Channel1 transfer complete flag.
299 * - DMA_FLAG_HT1: Channel1 half transfer flag.
300 * - DMA_FLAG_TE1: Channel1 transfer error flag.
301 * - DMA_FLAG_GL2: Channel2 global flag.
302 * - DMA_FLAG_TC2: Channel2 transfer complete flag.
303 * - DMA_FLAG_HT2: Channel2 half transfer flag.
304 * - DMA_FLAG_TE2: Channel2 transfer error flag.
305 * - DMA_FLAG_GL3: Channel3 global flag.
306 * - DMA_FLAG_TC3: Channel3 transfer complete flag.
307 * - DMA_FLAG_HT3: Channel3 half transfer flag.
308 * - DMA_FLAG_TE3: Channel3 transfer error flag.
309 * - DMA_FLAG_GL4: Channel4 global flag.
310 * - DMA_FLAG_TC4: Channel4 transfer complete flag.
311 * - DMA_FLAG_HT4: Channel4 half transfer flag.
312 * - DMA_FLAG_TE4: Channel4 transfer error flag.
313 * - DMA_FLAG_GL5: Channel5 global flag.
314 * - DMA_FLAG_TC5: Channel5 transfer complete flag.
315 * - DMA_FLAG_HT5: Channel5 half transfer flag.
316 * - DMA_FLAG_TE5: Channel5 transfer error flag.
317 * - DMA_FLAG_GL6: Channel6 global flag.
318 * - DMA_FLAG_TC6: Channel6 transfer complete flag.
319 * - DMA_FLAG_HT6: Channel6 half transfer flag.
320 * - DMA_FLAG_TE6: Channel6 transfer error flag.
321 * - DMA_FLAG_GL7: Channel7 global flag.
322 * - DMA_FLAG_TC7: Channel7 transfer complete flag.
323 * - DMA_FLAG_HT7: Channel7 half transfer flag.
324 * - DMA_FLAG_TE7: Channel7 transfer error flag.
325 * Output : None
326 * Return : The new state of DMA_FLAG (SET or RESET).
327 *******************************************************************************/
\ In section .XML, align 4, keep-with-next
328 FlagStatus DMA_GetFlagStatus(u32 DMA_FLAG)
329 {
\ DMA_GetFlagStatus:
\ 00000000 0100 MOVS R1,R0
330 FlagStatus bitstatus = RESET;
\ 00000002 0022 MOVS R2,#+0
\ 00000004 1000 MOVS R0,R2
331
332 /* Check the parameters */
333 assert_param(IS_DMA_GET_FLAG(DMA_FLAG));
334
335 /* Check the status of the specified DMA flag */
336 if ((DMA->ISR & DMA_FLAG) != (u32)RESET)
\ 00000006 .... LDR.N R2,??DataTable16 ;; 0x40020000
\ 00000008 1268 LDR R2,[R2, #+0]
\ 0000000A 0A40 ANDS R2,R2,R1
\ 0000000C 521E SUBS R2,R2,#+1
\ 0000000E 9241 SBCS R2,R2,R2
\ 00000010 D243 MVNS R2,R2
\ 00000012 D20F LSRS R2,R2,#+31
\ 00000014 1000 MOVS R0,R2
337 {
338 /* DMA_FLAG is set */
339 bitstatus = SET;
340 }
341 else
342 {
343 /* DMA_FLAG is reset */
344 bitstatus = RESET;
345 }
346 /* Return the DMA_FLAG status */
347 return bitstatus;
\ 00000016 C0B2 UXTB R0,R0 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000018 7047 BX LR ;; return
348 }
349
350 /*******************************************************************************
351 * Function Name : DMA_ClearFlag
352 * Description : Clears the DMA Channelx's pending flags.
353 * Input : - DMA_FLAG: specifies the flag to clear.
354 * This parameter can be any combination of the following values:
355 * - DMA_FLAG_GL1: Channel1 global flag.
356 * - DMA_FLAG_TC1: Channel1 transfer complete flag.
357 * - DMA_FLAG_HT1: Channel1 half transfer flag.
358 * - DMA_FLAG_TE1: Channel1 transfer error flag.
359 * - DMA_FLAG_GL2: Channel2 global flag.
360 * - DMA_FLAG_TC2: Channel2 transfer complete flag.
361 * - DMA_FLAG_HT2: Channel2 half transfer flag.
362 * - DMA_FLAG_TE2: Channel2 transfer error flag.
363 * - DMA_FLAG_GL3: Channel3 global flag.
364 * - DMA_FLAG_TC3: Channel3 transfer complete flag.
365 * - DMA_FLAG_HT3: Channel3 half transfer flag.
366 * - DMA_FLAG_TE3: Channel3 transfer error flag.
367 * - DMA_FLAG_GL4: Channel4 global flag.
368 * - DMA_FLAG_TC4: Channel4 transfer complete flag.
369 * - DMA_FLAG_HT4: Channel4 half transfer flag.
370 * - DMA_FLAG_TE4: Channel4 transfer error flag.
371 * - DMA_FLAG_GL5: Channel5 global flag.
372 * - DMA_FLAG_TC5: Channel5 transfer complete flag.
373 * - DMA_FLAG_HT5: Channel5 half transfer flag.
374 * - DMA_FLAG_TE5: Channel5 transfer error flag.
375 * - DMA_FLAG_GL6: Channel6 global flag.
376 * - DMA_FLAG_TC6: Channel6 transfer complete flag.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -