📄 stm32f10x_sdio.lst
字号:
274 * Return : None
275 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
276 void SDIO_ITConfig(u32 SDIO_IT, FunctionalState NewState)
277 {
278 /* Check the parameters */
279 assert_param(IS_SDIO_IT(SDIO_IT));
280 assert_param(IS_FUNCTIONAL_STATE(NewState));
281
282 if (NewState != DISABLE)
\ SDIO_ITConfig:
\ 00000000 044A LDR.N R2,??SDIO_ITConfig_0 ;; 0x4001803c
\ 00000002 0029 CMP R1,#+0
\ 00000004 1168 LDR R1,[R2, #+0]
\ 00000006 02D0 BEQ.N ??SDIO_ITConfig_1
283 {
284 /* Enable the SDIO interrupts */
285 SDIO->MASK |= SDIO_IT;
\ 00000008 0843 ORRS R0,R0,R1
\ 0000000A 1060 STR R0,[R2, #+0]
\ 0000000C 7047 BX LR
286 }
287 else
288 {
289 /* Disable the SDIO interrupts */
290 SDIO->MASK &= ~SDIO_IT;
\ ??SDIO_ITConfig_1:
\ 0000000E 8143 BICS R1,R1,R0
\ 00000010 1160 STR R1,[R2, #+0]
291 }
292 }
\ 00000012 7047 BX LR ;; return
\ ??SDIO_ITConfig_0:
\ 00000014 3C800140 DC32 0x4001803c
293
294 /*******************************************************************************
295 * Function Name : SDIO_DMACmd
296 * Description : Enables or disables the SDIO DMA request.
297 * Input : NewState: new state of the selected SDIO DMA request.
298 * This parameter can be: ENABLE or DISABLE.
299 * Output : None
300 * Return : None
301 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
302 void SDIO_DMACmd(FunctionalState NewState)
303 {
304 /* Check the parameters */
305 assert_param(IS_FUNCTIONAL_STATE(NewState));
306
307 *(vu32 *) DCTRL_DMAEN_BB = (u32)NewState;
\ SDIO_DMACmd:
\ 00000000 0149 LDR.N R1,??SDIO_DMACmd_0 ;; 0x4230058c
\ 00000002 0860 STR R0,[R1, #+0]
308 }
\ 00000004 7047 BX LR ;; return
\ 00000006 00BF Nop
\ ??SDIO_DMACmd_0:
\ 00000008 8C053042 DC32 0x4230058c
309
310 /*******************************************************************************
311 * Function Name : SDIO_SendCommand
312 * Description : Initializes the SDIO Command according to the specified
313 * parameters in the SDIO_CmdInitStruct and send the command.
314 * Input : SDIO_CmdInitStruct : pointer to a SDIO_CmdInitTypeDef
315 * structure that contains the configuration information
316 * for the SDIO command.
317 * Output : None
318 * Return : None
319 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
320 void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct)
321 {
322 u32 tmpreg = 0;
323
324 /* Check the parameters */
325 assert_param(IS_SDIO_CMD_INDEX(SDIO_CmdInitStruct->SDIO_CmdIndex));
326 assert_param(IS_SDIO_RESPONSE(SDIO_CmdInitStruct->SDIO_Response));
327 assert_param(IS_SDIO_WAIT(SDIO_CmdInitStruct->SDIO_Wait));
328 assert_param(IS_SDIO_CPSM(SDIO_CmdInitStruct->SDIO_CPSM));
329
330 /*---------------------------- SDIO ARG Configuration ------------------------*/
331 /* Set the SDIO Argument value */
332 SDIO->ARG = SDIO_CmdInitStruct->SDIO_Argument;
\ SDIO_SendCommand:
\ 00000000 0849 LDR.N R1,??SDIO_SendCommand_0 ;; 0x40018008
\ 00000002 0268 LDR R2,[R0, #+0]
\ 00000004 0A60 STR R2,[R1, #+0]
333
334 /*---------------------------- SDIO CMD Configuration ------------------------*/
335 /* Get the SDIO CMD value */
336 tmpreg = SDIO->CMD;
\ 00000006 091D ADDS R1,R1,#+4
\ 00000008 0A68 LDR R2,[R1, #+0]
337
338 /* Clear CMDINDEX, WAITRESP, WAITINT, WAITPEND, CPSMEN bits */
339 tmpreg &= CMD_CLEAR_MASK;
340 /* Set CMDINDEX bits according to SDIO_CmdIndex value */
341 /* Set WAITRESP bits according to SDIO_Response value */
342 /* Set WAITINT and WAITPEND bits according to SDIO_Wait value */
343 /* Set CPSMEN bits according to SDIO_CPSM value */
344 tmpreg |= (u32)SDIO_CmdInitStruct->SDIO_CmdIndex | SDIO_CmdInitStruct->SDIO_Response
345 | SDIO_CmdInitStruct->SDIO_Wait | SDIO_CmdInitStruct->SDIO_CPSM;
346
347 /* Write to SDIO CMD */
348 SDIO->CMD = tmpreg;
\ 0000000A D20A LSRS R2,R2,#+11
\ 0000000C D202 LSLS R2,R2,#+11
\ 0000000E 4368 LDR R3,[R0, #+4]
\ 00000010 1343 ORRS R3,R3,R2
\ 00000012 8268 LDR R2,[R0, #+8]
\ 00000014 1A43 ORRS R2,R2,R3
\ 00000016 C368 LDR R3,[R0, #+12]
\ 00000018 1343 ORRS R3,R3,R2
\ 0000001A 0069 LDR R0,[R0, #+16]
\ 0000001C 1843 ORRS R0,R0,R3
\ 0000001E 0860 STR R0,[R1, #+0]
349 }
\ 00000020 7047 BX LR ;; return
\ 00000022 00BF Nop
\ ??SDIO_SendCommand_0:
\ 00000024 08800140 DC32 0x40018008
350
351 /*******************************************************************************
352 * Function Name : SDIO_CmdStructInit
353 * Description : Fills each SDIO_CmdInitStruct member with its default value.
354 * Input : SDIO_CmdInitStruct: pointer to an SDIO_CmdInitTypeDef
355 * structure which will be initialized.
356 * Output : None
357 * Return : None
358 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
359 void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct)
360 {
361 /* SDIO_CmdInitStruct members default value */
362 SDIO_CmdInitStruct->SDIO_Argument = 0x00;
\ SDIO_CmdStructInit:
\ 00000000 0021 MOVS R1,#+0
\ 00000002 0160 STR R1,[R0, #+0]
363 SDIO_CmdInitStruct->SDIO_CmdIndex = 0x00;
\ 00000004 4160 STR R1,[R0, #+4]
364 SDIO_CmdInitStruct->SDIO_Response = SDIO_Response_No;
\ 00000006 8160 STR R1,[R0, #+8]
365 SDIO_CmdInitStruct->SDIO_Wait = SDIO_Wait_No;
\ 00000008 C160 STR R1,[R0, #+12]
366 SDIO_CmdInitStruct->SDIO_CPSM = SDIO_CPSM_Disable;
\ 0000000A 0161 STR R1,[R0, #+16]
367 }
\ 0000000C 7047 BX LR ;; return
368
369 /*******************************************************************************
370 * Function Name : SDIO_GetCommandResponse
371 * Description : Returns command index of last command for which response
372 * received.
373 * Input : None
374 * Output : None
375 * Return : Returns the command index of the last command response received.
376 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
377 u8 SDIO_GetCommandResponse(void)
378 {
379 return (u8)(SDIO->RESPCMD);
\ SDIO_GetCommandResponse:
\ 00000000 0148 LDR.N R0,??SDIO_GetCommandResponse_0 ;; 0x40018010
\ 00000002 0068 LDR R0,[R0, #+0]
\ 00000004 C0B2 UXTB R0,R0
\ 00000006 7047 BX LR ;; return
\ ??SDIO_GetCommandResponse_0:
\ 00000008 10800140 DC32 0x40018010
380 }
381
382 /*******************************************************************************
383 * Function Name : SDIO_GetResponse
384 * Description : Returns response received from the card for the last command.
385 * Input : - SDIO_RESP: Specifies the SDIO response register.
386 * This parameter can be one of the following values:
387 * - SDIO_RESP1: Response Register 1
388 * - SDIO_RESP2: Response Register 2
389 * - SDIO_RESP3: Response Register 3
390 * - SDIO_RESP4: Response Register 4
391 * Output : None
392 * Return : The Corresponding response register value.
393 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
394 u32 SDIO_GetResponse(u32 SDIO_RESP)
395 {
396 /* Check the parameters */
397 assert_param(IS_SDIO_RESP(SDIO_RESP));
398
399 return (*(vu32 *)(SDIO_RESP_ADDR + SDIO_RESP));
\ SDIO_GetResponse:
\ 00000000 0149 LDR.N R1,??SDIO_GetResponse_0 ;; 0x40018014
\ 00000002 4058 LDR R0,[R0, R1]
\ 00000004 7047 BX LR ;; return
\ 00000006 00BF Nop
\ ??SDIO_GetResponse_0:
\ 00000008 14800140 DC32 0x40018014
400 }
401
402 /*******************************************************************************
403 * Function Name : SDIO_DataConfig
404 * Description : Initializes the SDIO data path according to the specified
405 * parameters in the SDIO_DataInitStruct.
406 * Input : SDIO_DataInitStruct : pointer to a SDIO_DataInitTypeDef
407 * structure that contains the configuration information
408 * for the SDIO command.
409 * Output : None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -