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

📄 stm32f10x_spi.lst

📁 针对STM32F103的UCOS移植
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.42A/W32 KICKSTART     13/Mar/2009  16:01:13 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  thumb                                                #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\UC_OS\Micrium\Software\CPU\ST\STM32\src\stm32f10x #
#                       _spi.c                                               #
#    Command line    =  E:\UC_OS\Micrium\Software\CPU\ST\STM32\src\stm32f10x #
#                       _spi.c -lCN E:\UC_OS\Micrium\Software\EvalBoards\ST\ #
#                       STM3210B-EVAL\IAR\OS-Probe\Flash\List\ -o            #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\Flash\Obj\ -z6 --no_unroll            #
#                       --no_inline --no_tbaa --no_scheduling --debug        #
#                       --cpu_mode thumb --endian little --cpu cortex-M3     #
#                       --stack_align 4 -e --fpu None --dlib_config          #
#                       "C:\Program Files\IAR Systems\Embedded Workbench     #
#                       4.0 Kickstart\arm\LIB\dl7mptnnl8n.h" -I              #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\ -I E:\UC_OS\Micrium\Software\EvalBoa #
#                       rds\ST\STM3210B-EVAL\IAR\OS-Probe\..\..\..\..\..\uco #
#                       s-ii\ports\arm-cortex-m3\generic\iar\ -I             #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\ucos-ii\source\ -I     #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uc-lib\ -I             #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uc-cpu\ -I             #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uc-cpu\ARM-Cortex-M3\I #
#                       AR\ -I E:\UC_OS\Micrium\Software\EvalBoards\ST\STM32 #
#                       10B-EVAL\IAR\OS-Probe\..\..\..\..\..\cpu\st\stm32\in #
#                       c\ -I E:\UC_OS\Micrium\Software\EvalBoards\ST\STM321 #
#                       0B-EVAL\IAR\OS-Probe\..\BSP\ -I                      #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Commun #
#                       ication\Generic\RS-232\Source\ -I                    #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Commun #
#                       ication\Generic\RS-232\Ports\ST\STM32\ -I            #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Commun #
#                       ication\Generic\Source\ -I                           #
#                       E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\..\..\..\..\..\uC-Probe\Target\Plugin #
#                       s\uCOS-II\ -I "C:\Program Files\IAR                  #
#                       Systems\Embedded Workbench 4.0 Kickstart\arm\INC\"   #
#    List file       =  E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\Flash\List\stm32f10x_spi.lst          #
#    Object file     =  E:\UC_OS\Micrium\Software\EvalBoards\ST\STM3210B-EVA #
#                       L\IAR\OS-Probe\Flash\Obj\stm32f10x_spi.r79           #
#                                                                            #
#                                                                            #
##############################################################################

E:\UC_OS\Micrium\Software\CPU\ST\STM32\src\stm32f10x_spi.c
      1          /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
      2          * File Name          : stm32f10x_spi.c
      3          * Author             : MCD Application Team
      4          * Date First Issued  : 09/29/2006
      5          * Description        : This file provides all the SPI firmware functions.
      6          ********************************************************************************
      7          * History:
      8          * 05/21/2007: V0.3
      9          * 04/02/2007: V0.2
     10          * 02/05/2007: V0.1
     11          * 09/29/2006: V0.01
     12          ********************************************************************************
     13          * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
     14          * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
     15          * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
     16          * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
     17          * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
     18          * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
     19          *******************************************************************************/
     20          
     21          /* Includes ------------------------------------------------------------------*/
     22          #include "stm32f10x_spi.h"
     23          #include "stm32f10x_rcc.h"
     24          
     25          /* Private typedef -----------------------------------------------------------*/
     26          /* Private define ------------------------------------------------------------*/
     27          /* SPI SPE mask */
     28          #define CR1_SPE_Set          ((u16)0x0040)
     29          #define CR1_SPE_Reset        ((u16)0xFFBF)
     30          
     31          /* SPI CRCNext mask */
     32          #define CR1_CRCNext_Set      ((u16)0x1000)
     33          
     34          /* SPI CRCEN mask */
     35          #define CR1_CRCEN_Set        ((u16)0x2000)
     36          #define CR1_CRCEN_Reset      ((u16)0xDFFF)
     37          
     38          /* SPI SSOE mask */
     39          #define CR2_SSOE_Set        ((u16)0x0004)
     40          #define CR2_SSOE_Reset      ((u16)0xFFFB)
     41          
     42          /* SPI registers Masks */
     43          #define CR1_CLEAR_Mask       ((u16)0x3040)
     44          
     45          /* Private macro -------------------------------------------------------------*/
     46          /* Private variables ---------------------------------------------------------*/
     47          /* Private function prototypes -----------------------------------------------*/
     48          /* Private functions ---------------------------------------------------------*/
     49          
     50          /*******************************************************************************
     51          * Function Name  : SPI_DeInit
     52          * Description    : Deinitializes the SPIx peripheral registers to their default
     53          *                  reset values.
     54          * Input          : - SPIx: where x can be 1 or 2 to select the SPI peripheral.
     55          * Output         : None
     56          * Return         : None
     57          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     58          void SPI_DeInit(SPI_TypeDef* SPIx)
     59          {
   \                     SPI_DeInit:
   \   00000000   00B5               PUSH     {LR}
     60            switch (*(u32*)&SPIx)
   \   00000002   0D49               LDR.N    R1,??SPI_DeInit_0  ;; 0x40003800
   \   00000004   8842               CMP      R0,R1
   \   00000006   0CD0               BEQ.N    ??SPI_DeInit_1
   \   00000008   0C49               LDR.N    R1,??SPI_DeInit_0+0x4  ;; 0x40013000
   \   0000000A   8842               CMP      R0,R1
   \   0000000C   12D1               BNE.N    ??SPI_DeInit_2
     61            {
     62              case SPI1_BASE:
     63                /* Enable SPI1 reset state */
     64                RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
   \   0000000E   0121               MOVS     R1,#+1
   \   00000010   0803               LSLS     R0,R1,#+12
   \   00000012   ........           _BLF     RCC_APB2PeriphResetCmd,??RCC_APB2PeriphResetCmd??rT
     65                /* Release SPI1 from reset state */
     66                RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);
   \   00000016   0021               MOVS     R1,#+0
   \   00000018   5FF48050           MOVS     R0,#+4096
   \   0000001C   ........           _BLF     RCC_APB2PeriphResetCmd,??RCC_APB2PeriphResetCmd??rT
   \   00000020   00BD               POP      {PC}
     67                break;
     68          
     69              case SPI2_BASE:
     70                /* Enable SPI2 reset state */
     71                RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE);
   \                     ??SPI_DeInit_1:
   \   00000022   0121               MOVS     R1,#+1
   \   00000024   8803               LSLS     R0,R1,#+14
   \   00000026   ........           _BLF     RCC_APB1PeriphResetCmd,??RCC_APB1PeriphResetCmd??rT
     72                /* Release SPI2 from reset state */
     73                RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE);
   \   0000002A   0021               MOVS     R1,#+0
   \   0000002C   5FF48040           MOVS     R0,#+16384
   \   00000030   ........           _BLF     RCC_APB1PeriphResetCmd,??RCC_APB1PeriphResetCmd??rT
     74                break;
     75          
     76              default:
     77                break;
     78            }
     79          }
   \                     ??SPI_DeInit_2:
   \   00000034   00BD               POP      {PC}             ;; return
   \   00000036   00BF               Nop      
   \                     ??SPI_DeInit_0:
   \   00000038   00380040           DC32     0x40003800
   \   0000003C   00300140           DC32     0x40013000
     80          
     81          /*******************************************************************************
     82          * Function Name  : SPI_Init
     83          * Description    : Initializes the SPIx peripheral according to the specified 
     84          *                  parameters in the SPI_InitStruct.
     85          * Input          : - SPIx: where x can be 1 or 2 to select the SPI peripheral.
     86          *                  - SPI_InitStruct: pointer to a SPI_InitTypeDef structure that
     87          *                    contains the configuration information for the specified
     88          *                    SPI peripheral.
     89          * Output         : None
     90          * Return         : None
     91          ******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     92          void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)
     93          {
     94            u16 tmpreg = 0;
     95          
     96            /* Check the parameters */
     97            assert(IS_SPI_DIRECTION_MODE(SPI_InitStruct->SPI_Direction));
     98            assert(IS_SPI_MODE(SPI_InitStruct->SPI_Mode));
     99            assert(IS_SPI_DATASIZE(SPI_InitStruct->SPI_DataSize));
    100            assert(IS_SPI_CPOL(SPI_InitStruct->SPI_CPOL));
    101            assert(IS_SPI_CPHA(SPI_InitStruct->SPI_CPHA));
    102            assert(IS_SPI_NSS(SPI_InitStruct->SPI_NSS));
    103            assert(IS_SPI_BAUDRATE_PRESCALER(SPI_InitStruct->SPI_BaudRatePrescaler));
    104            assert(IS_SPI_FIRST_BIT(SPI_InitStruct->SPI_FirstBit));
    105            assert(IS_SPI_CRC_POLYNOMIAL(SPI_InitStruct->SPI_CRCPolynomial));
    106          
    107          /*---------------------------- SPIx CR1 Configuration ------------------------*/
    108            /* Get the SPIx CR1 value */
    109            tmpreg = SPIx->CR1;
   \                     SPI_Init:
   \   00000000   0288               LDRH     R2,[R0, #+0]
    110            /* Clear BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, MSTR, CPOL and CPHA bits */
    111            tmpreg &= CR1_CLEAR_Mask;
    112            /* Configure SPIx: direction, NSS management, first transmitted bit, BaudRate prescaler
    113               master/salve mode, CPOL and CPHA */
    114            /* Set BIDImode, BIDIOE and RxONLY bits according to SPI_Direction value */
    115            /* Set SSM, SSI and MSTR bits according to SPI_Mode and SPI_NSS values */
    116            /* Set LSBFirst bit according to SPI_FirstBit value */
    117            /* Set BR bits according to SPI_BaudRatePrescaler value */
    118            /* Set CPOL bit according to SPI_CPOL value */
    119            /* Set CPHA bit according to SPI_CPHA value */
    120            tmpreg |= (u16)((u32)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode |
    121                            SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL |  
    122                            SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS |  
    123                            SPI_InitStruct->SPI_BaudRatePrescaler | SPI_InitStruct->SPI_FirstBit);
    124            /* Write to SPIx CR1 */
    125            SPIx->CR1 = tmpreg;
   \   00000002   12F44152           ANDS     R2,R2,#0x3040
   \   00000006   0B88               LDRH     R3,[R1, #+0]
   \   00000008   1343               ORRS     R3,R3,R2
   \   0000000A   4A88               LDRH     R2,[R1, #+2]
   \   0000000C   1A43               ORRS     R2,R2,R3
   \   0000000E   8B88               LDRH     R3,[R1, #+4]
   \   00000010   1343               ORRS     R3,R3,R2
   \   00000012   CA88               LDRH     R2,[R1, #+6]
   \   00000014   1A43               ORRS     R2,R2,R3
   \   00000016   0B89               LDRH     R3,[R1, #+8]
   \   00000018   1343               ORRS     R3,R3,R2
   \   0000001A   4A89               LDRH     R2,[R1, #+10]
   \   0000001C   1A43               ORRS     R2,R2,R3
   \   0000001E   8B89               LDRH     R3,[R1, #+12]
   \   00000020   1343               ORRS     R3,R3,R2
   \   00000022   CA89               LDRH     R2,[R1, #+14]
   \   00000024   1A43               ORRS     R2,R2,R3
   \   00000026   0280               STRH     R2,[R0, #+0]
    126          
    127          /*---------------------------- SPIx CRCPOLY Configuration --------------------*/
    128            /* Write to SPIx CRCPOLY */
    129            SPIx->CRCPR = SPI_InitStruct->SPI_CRCPolynomial;
   \   00000028   098A               LDRH     R1,[R1, #+16]
   \   0000002A   0182               STRH     R1,[R0, #+16]
    130          }
   \   0000002C   7047               BX       LR               ;; return
    131          
    132          /*******************************************************************************
    133          * Function Name  : SPI_StructInit
    134          * Description    : Fills each SPI_InitStruct member with its default value.
    135          * Input          : - SPI_InitStruct : pointer to a SPI_InitTypeDef structure
    136          *                    which will be initialized.
    137          * Output         : None
    138          * Return         : None
    139          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    140          void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct)
    141          {
    142          /*--------------- Reset SPI init structure parameters values -----------------*/
    143            /* Initialize the SPI_Direction member */
    144            SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex;
   \                     SPI_StructInit:
   \   00000000   0021               MOVS     R1,#+0
   \   00000002   0180               STRH     R1,[R0, #+0]
    145          
    146            /* initialize the SPI_Mode member */
    147            SPI_InitStruct->SPI_Mode = SPI_Mode_Slave;
   \   00000004   4180               STRH     R1,[R0, #+2]
    148          
    149            /* initialize the SPI_DataSize member */
    150            SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b;
   \   00000006   8180               STRH     R1,[R0, #+4]
    151          

⌨️ 快捷键说明

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