⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm32f10x_spi.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;254    }
000090  b005              ADD      sp,sp,#0x14
000092  bdf0              POP      {r4-r7,pc}
;;;255    
                          ENDP


                          AREA ||i.SPI_StructInit||, CODE, READONLY, ALIGN=1

                  SPI_StructInit PROC
;;;267      /* Initialize the SPI_Direction member */
;;;268      SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex;
000000  2100              MOVS     r1,#0
000002  8001              STRH     r1,[r0,#0]
;;;269    
;;;270      /* initialize the SPI_Mode member */
;;;271      SPI_InitStruct->SPI_Mode = SPI_Mode_Slave;
000004  8041              STRH     r1,[r0,#2]
;;;272    
;;;273      /* initialize the SPI_DataSize member */
;;;274      SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b;
000006  8081              STRH     r1,[r0,#4]
;;;275    
;;;276      /* Initialize the SPI_CPOL member */
;;;277      SPI_InitStruct->SPI_CPOL = SPI_CPOL_Low;
000008  80c1              STRH     r1,[r0,#6]
;;;278    
;;;279      /* Initialize the SPI_CPHA member */
;;;280      SPI_InitStruct->SPI_CPHA = SPI_CPHA_1Edge;
00000a  8101              STRH     r1,[r0,#8]
;;;281    
;;;282      /* Initialize the SPI_NSS member */
;;;283      SPI_InitStruct->SPI_NSS = SPI_NSS_Hard;
00000c  8141              STRH     r1,[r0,#0xa]
;;;284    
;;;285      /* Initialize the SPI_BaudRatePrescaler member */
;;;286      SPI_InitStruct->SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
00000e  8181              STRH     r1,[r0,#0xc]
;;;287    
;;;288      /* Initialize the SPI_FirstBit member */
;;;289      SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB;
000010  81c1              STRH     r1,[r0,#0xe]
;;;290    
;;;291      /* Initialize the SPI_CRCPolynomial member */
;;;292      SPI_InitStruct->SPI_CRCPolynomial = 7;
000012  2107              MOVS     r1,#7
000014  8201              STRH     r1,[r0,#0x10]
;;;293    }
000016  4770              BX       lr
;;;294    
                          ENDP


                          AREA ||i.I2S_StructInit||, CODE, READONLY, ALIGN=1

                  I2S_StructInit PROC
;;;306      /* Initialize the I2S_Mode member */
;;;307      I2S_InitStruct->I2S_Mode = I2S_Mode_SlaveTx;
000000  2100              MOVS     r1,#0
000002  8001              STRH     r1,[r0,#0]
;;;308      
;;;309      /* Initialize the I2S_Standard member */
;;;310      I2S_InitStruct->I2S_Standard = I2S_Standard_Phillips;
000004  8041              STRH     r1,[r0,#2]
;;;311      
;;;312      /* Initialize the I2S_DataFormat member */
;;;313      I2S_InitStruct->I2S_DataFormat = I2S_DataFormat_16b;
000006  8081              STRH     r1,[r0,#4]
;;;314      
;;;315      /* Initialize the I2S_MCLKOutput member */
;;;316      I2S_InitStruct->I2S_MCLKOutput = I2S_MCLKOutput_Disable;
000008  80c1              STRH     r1,[r0,#6]
;;;317      
;;;318      /* Initialize the I2S_AudioFreq member */
;;;319      I2S_InitStruct->I2S_AudioFreq = I2S_AudioFreq_Default;
00000a  2202              MOVS     r2,#2
00000c  8102              STRH     r2,[r0,#8]
;;;320      
;;;321      /* Initialize the I2S_CPOL member */
;;;322      I2S_InitStruct->I2S_CPOL = I2S_CPOL_Low;
00000e  8141              STRH     r1,[r0,#0xa]
;;;323    }
000010  4770              BX       lr
;;;324    
                          ENDP


                          AREA ||i.SPI_Cmd||, CODE, READONLY, ALIGN=1

                  SPI_Cmd PROC
;;;339    
;;;340      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;341      {
;;;342        /* Enable the selected SPI peripheral */
;;;343        SPIx->CR1 |= CR1_SPE_Set;
000002  8801              LDRH     r1,[r0,#0]
000004  d002              BEQ      |L6.12|
000006  f041f041          ORR      r1,r1,#0x40
00000a  e001              B        |L6.16|
                  |L6.12|
;;;344      }
;;;345      else
;;;346      {
;;;347        /* Disable the selected SPI peripheral */
;;;348        SPIx->CR1 &= CR1_SPE_Reset;
00000c  f021f021          BIC      r1,r1,#0x40
                  |L6.16|
000010  8001              STRH     r1,[r0,#0]            ;343
;;;349      }
;;;350    }
000012  4770              BX       lr
;;;351    
                          ENDP


                          AREA ||i.I2S_Cmd||, CODE, READONLY, ALIGN=1

                  I2S_Cmd PROC
;;;366    
;;;367      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;368      {
;;;369        /* Enable the selected SPI peripheral (in I2S mode) */
;;;370        SPIx->I2SCFGR |= I2SCFGR_I2SE_Set;
000002  8b81              LDRH     r1,[r0,#0x1c]
000004  d002              BEQ      |L7.12|
000006  f441f441          ORR      r1,r1,#0x400
00000a  e001              B        |L7.16|
                  |L7.12|
;;;371      }
;;;372      else
;;;373      {
;;;374        /* Disable the selected SPI peripheral (in I2S mode) */
;;;375        SPIx->I2SCFGR &= I2SCFGR_I2SE_Reset;
00000c  f421f421          BIC      r1,r1,#0x400
                  |L7.16|
000010  8381              STRH     r1,[r0,#0x1c]         ;370
;;;376      }
;;;377    }
000012  4770              BX       lr
;;;378    
                          ENDP


                          AREA ||i.SPI_I2S_ITConfig||, CODE, READONLY, ALIGN=1

                  SPI_I2S_ITConfig PROC
;;;405      /* Get the SPI/I2S IT index */
;;;406      itpos = SPI_I2S_IT >> 4;
000000  0909              LSRS     r1,r1,#4
;;;407      /* Set the IT mask */
;;;408      itmask = (u16)((u16)1 << itpos);
000002  2301              MOVS     r3,#1
000004  408b              LSLS     r3,r3,r1
;;;409    
;;;410      if (NewState != DISABLE)
000006  2a00              CMP      r2,#0
;;;411      {
;;;412        /* Enable the selected SPI/I2S interrupt */
;;;413        SPIx->CR2 |= itmask;
000008  8882              LDRH     r2,[r0,#4]
00000a  b299              UXTH     r1,r3                 ;408
00000c  d001              BEQ      |L8.18|
00000e  430a              ORRS     r2,r2,r1
000010  e000              B        |L8.20|
                  |L8.18|
;;;414      }
;;;415      else
;;;416      {
;;;417        /* Disable the selected SPI/I2S interrupt */
;;;418        SPIx->CR2 &= (u16)~itmask;
000012  438a              BICS     r2,r2,r1
                  |L8.20|
000014  8082              STRH     r2,[r0,#4]            ;413
;;;419      }
;;;420    }
000016  4770              BX       lr
;;;421    
                          ENDP


                          AREA ||i.SPI_I2S_DMACmd||, CODE, READONLY, ALIGN=1

                  SPI_I2S_DMACmd PROC
;;;445    
;;;446      if (NewState != DISABLE)
000000  2a00              CMP      r2,#0
;;;447      {
;;;448        /* Enable the selected SPI/I2S DMA requests */
;;;449        SPIx->CR2 |= SPI_I2S_DMAReq;
000002  8882              LDRH     r2,[r0,#4]
000004  d001              BEQ      |L9.10|
000006  430a              ORRS     r2,r2,r1
000008  e000              B        |L9.12|
                  |L9.10|
;;;450      }
;;;451      else
;;;452      {
;;;453        /* Disable the selected SPI/I2S DMA requests */
;;;454        SPIx->CR2 &= (u16)~SPI_I2S_DMAReq;
00000a  438a              BICS     r2,r2,r1
                  |L9.12|
00000c  8082              STRH     r2,[r0,#4]            ;449
;;;455      }
;;;456    }
00000e  4770              BX       lr
;;;457    
                          ENDP


                          AREA ||i.SPI_I2S_SendData||, CODE, READONLY, ALIGN=1

                  SPI_I2S_SendData PROC
;;;473      /* Write in the DR register the data to be sent */
;;;474      SPIx->DR = Data;
000000  8181              STRH     r1,[r0,#0xc]
;;;475    }
000002  4770              BX       lr
;;;476    
                          ENDP


                          AREA ||i.SPI_I2S_ReceiveData||, CODE, READONLY, ALIGN=1

                  SPI_I2S_ReceiveData PROC
;;;491      /* Return the data in the DR register */
;;;492      return SPIx->DR;
000000  8980              LDRH     r0,[r0,#0xc]
;;;493    }
000002  4770              BX       lr
;;;494    
                          ENDP


                          AREA ||i.SPI_NSSInternalSoftwareConfig||, CODE, READONLY, ALIGN=1

                  SPI_NSSInternalSoftwareConfig PROC
;;;512    
;;;513      if (SPI_NSSInternalSoft != SPI_NSSInternalSoft_Reset)
000000  f5a1f5a1          SUB      r2,r1,#0xfe00
;;;514      {
;;;515        /* Set NSS pin internally by software */
;;;516        SPIx->CR1 |= SPI_NSSInternalSoft_Set;
000004  8801              LDRH     r1,[r0,#0]
000006  3aff              SUBS     r2,r2,#0xff           ;513
000008  d002              BEQ      |L12.16|
00000a  f441f441          ORR      r1,r1,#0x100
00000e  e001              B        |L12.20|
                  |L12.16|
;;;517      }
;;;518      else
;;;519      {
;;;520        /* Reset NSS pin internally by software */
;;;521        SPIx->CR1 &= SPI_NSSInternalSoft_Reset;
000010  f421f421          BIC      r1,r1,#0x100
                  |L12.20|
000014  8001              STRH     r1,[r0,#0]            ;516
;;;522      }
;;;523    }
000016  4770              BX       lr
;;;524    
                          ENDP


                          AREA ||i.SPI_SSOutputCmd||, CODE, READONLY, ALIGN=1

                  SPI_SSOutputCmd PROC
;;;539    
;;;540      if (NewState != DISABLE)
000000  2900              CMP      r1,#0
;;;541      {
;;;542        /* Enable the selected SPI SS output */
;;;543        SPIx->CR2 |= CR2_SSOE_Set;
000002  8881              LDRH     r1,[r0,#4]
000004  d002              BEQ      |L13.12|
000006  f041f041          ORR      r1,r1,#4
00000a  e001              B        |L13.16|
                  |L13.12|
;;;544      }
;;;545      else
;;;546      {
;;;547        /* Disable the selected SPI SS output */
;;;548        SPIx->CR2 &= CR2_SSOE_Reset;
00000c  f021f021          BIC      r1,r1,#4
                  |L13.16|
000010  8081              STRH     r1,[r0,#4]            ;543
;;;549      }
;;;550    }
000012  4770              BX       lr
;;;551    
                          ENDP


                          AREA ||i.SPI_DataSizeConfig||, CODE, READONLY, ALIGN=1

                  SPI_DataSizeConfig PROC
;;;569      /* Clear DFF bit */
;;;570      SPIx->CR1 &= (u16)~SPI_DataSize_16b;
000000  8802              LDRH     r2,[r0,#0]
000002  f422f422          BIC      r2,r2,#0x800
000006  8002              STRH     r2,[r0,#0]
;;;571      /* Set new DFF bit value */
;;;572      SPIx->CR1 |= SPI_DataSize;
000008  8802              LDRH     r2,[r0,#0]
00000a  430a              ORRS     r2,r2,r1
00000c  8002              STRH     r2,[r0,#0]
;;;573    }
00000e  4770              BX       lr
;;;574    
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -