openblt/Target/Demo/ARMCM3_STM32_Nucleo_STM32F1.../Boot/obj/stm32f10x_spi.lst

1863 lines
123 KiB
Plaintext

1 .syntax unified
2 .cpu cortex-m3
3 .fpu softvfp
4 .eabi_attribute 20, 1
5 .eabi_attribute 21, 1
6 .eabi_attribute 23, 3
7 .eabi_attribute 24, 1
8 .eabi_attribute 25, 1
9 .eabi_attribute 26, 1
10 .eabi_attribute 30, 1
11 .eabi_attribute 34, 1
12 .eabi_attribute 18, 4
13 .thumb
14 .file "stm32f10x_spi.c"
15 .text
16 .Ltext0:
17 .cfi_sections .debug_frame
18 .section .text.SPI_I2S_DeInit,"ax",%progbits
19 .align 2
20 .global SPI_I2S_DeInit
21 .thumb
22 .thumb_func
24 SPI_I2S_DeInit:
25 .LFB29:
26 .file 1 "./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c"
1:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
2:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** ******************************************************************************
3:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @file stm32f10x_spi.c
4:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @author MCD Application Team
5:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @version V3.5.0
6:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @date 11-March-2011
7:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief This file provides all the SPI firmware functions.
8:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** ******************************************************************************
9:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @attention
10:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** *
11:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
12:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
13:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
14:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
15:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
16:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
17:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** *
18:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
19:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** ******************************************************************************
20:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
21:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
22:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Includes ------------------------------------------------------------------*/
23:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #include "stm32f10x_spi.h"
24:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #include "stm32f10x_rcc.h"
25:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
26:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @addtogroup STM32F10x_StdPeriph_Driver
27:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
28:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
29:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
30:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI
31:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief SPI driver modules
32:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
33:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
34:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
35:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI_Private_TypesDefinitions
36:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
37:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
38:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
39:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
40:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @}
41:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
42:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
43:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
44:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI_Private_Defines
45:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
46:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
47:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
48:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI SPE mask */
49:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR1_SPE_Set ((uint16_t)0x0040)
50:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR1_SPE_Reset ((uint16_t)0xFFBF)
51:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
52:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* I2S I2SE mask */
53:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2SCFGR_I2SE_Set ((uint16_t)0x0400)
54:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2SCFGR_I2SE_Reset ((uint16_t)0xFBFF)
55:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
56:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI CRCNext mask */
57:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR1_CRCNext_Set ((uint16_t)0x1000)
58:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
59:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI CRCEN mask */
60:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR1_CRCEN_Set ((uint16_t)0x2000)
61:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR1_CRCEN_Reset ((uint16_t)0xDFFF)
62:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
63:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI SSOE mask */
64:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR2_SSOE_Set ((uint16_t)0x0004)
65:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR2_SSOE_Reset ((uint16_t)0xFFFB)
66:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
67:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI registers Masks */
68:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define CR1_CLEAR_Mask ((uint16_t)0x3040)
69:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2SCFGR_CLEAR_Mask ((uint16_t)0xF040)
70:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
71:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI or I2S mode selection masks */
72:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define SPI_Mode_Select ((uint16_t)0xF7FF)
73:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2S_Mode_Select ((uint16_t)0x0800)
74:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
75:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* I2S clock source selection masks */
76:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2S2_CLOCK_SRC ((uint32_t)(0x00020000))
77:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2S3_CLOCK_SRC ((uint32_t)(0x00040000))
78:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2S_MUL_MASK ((uint32_t)(0x0000F000))
79:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #define I2S_DIV_MASK ((uint32_t)(0x000000F0))
80:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
81:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
82:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @}
83:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
84:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
85:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI_Private_Macros
86:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
87:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
88:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
89:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
90:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @}
91:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
92:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
93:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI_Private_Variables
94:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
95:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
96:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
97:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
98:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @}
99:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
100:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
101:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI_Private_FunctionPrototypes
102:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
103:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
104:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
105:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
106:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @}
107:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
108:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
109:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /** @defgroup SPI_Private_Functions
110:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @{
111:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
112:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
113:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
114:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Deinitializes the SPIx peripheral registers to their default
115:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * reset values (Affects also the I2Ss).
116:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
117:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
118:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
119:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_I2S_DeInit(SPI_TypeDef* SPIx)
120:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
27 .loc 1 120 0
28 .cfi_startproc
29 @ args = 0, pretend = 0, frame = 0
30 @ frame_needed = 0, uses_anonymous_args = 0
31 .LVL0:
32 0000 08B5 push {r3, lr}
33 .cfi_def_cfa_offset 8
34 .cfi_offset 3, -8
35 .cfi_offset 14, -4
121:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
122:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
123:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
124:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (SPIx == SPI1)
36 .loc 1 124 0
37 0002 154B ldr r3, .L6
38 0004 9842 cmp r0, r3
39 0006 0AD1 bne .L2
125:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
126:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable SPI1 reset state */
127:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE);
40 .loc 1 127 0
41 0008 4FF48050 mov r0, #4096
42 .LVL1:
43 000c 0121 movs r1, #1
44 000e FFF7FEFF bl RCC_APB2PeriphResetCmd
45 .LVL2:
128:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Release SPI1 from reset state */
129:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE);
46 .loc 1 129 0
47 0012 4FF48050 mov r0, #4096
48 0016 0021 movs r1, #0
49 0018 FFF7FEFF bl RCC_APB2PeriphResetCmd
50 .LVL3:
51 001c 08BD pop {r3, pc}
52 .LVL4:
53 .L2:
130:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
131:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else if (SPIx == SPI2)
54 .loc 1 131 0
55 001e 0F4B ldr r3, .L6+4
56 0020 9842 cmp r0, r3
57 0022 0AD1 bne .L4
132:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
133:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable SPI2 reset state */
134:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE);
58 .loc 1 134 0
59 0024 4FF48040 mov r0, #16384
60 .LVL5:
61 0028 0121 movs r1, #1
62 002a FFF7FEFF bl RCC_APB1PeriphResetCmd
63 .LVL6:
135:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Release SPI2 from reset state */
136:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE);
64 .loc 1 136 0
65 002e 4FF48040 mov r0, #16384
66 0032 0021 movs r1, #0
67 0034 FFF7FEFF bl RCC_APB1PeriphResetCmd
68 .LVL7:
69 0038 08BD pop {r3, pc}
70 .LVL8:
71 .L4:
137:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
138:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
139:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
140:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (SPIx == SPI3)
72 .loc 1 140 0
73 003a 094B ldr r3, .L6+8
74 003c 9842 cmp r0, r3
75 003e 09D1 bne .L1
141:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
142:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable SPI3 reset state */
143:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, ENABLE);
76 .loc 1 143 0
77 0040 4FF40040 mov r0, #32768
78 .LVL9:
79 0044 0121 movs r1, #1
80 0046 FFF7FEFF bl RCC_APB1PeriphResetCmd
81 .LVL10:
144:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Release SPI3 from reset state */
145:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, DISABLE);
82 .loc 1 145 0
83 004a 4FF40040 mov r0, #32768
84 004e 0021 movs r1, #0
85 0050 FFF7FEFF bl RCC_APB1PeriphResetCmd
86 .LVL11:
87 .L1:
88 0054 08BD pop {r3, pc}
89 .L7:
90 0056 00BF .align 2
91 .L6:
92 0058 00300140 .word 1073819648
93 005c 00380040 .word 1073756160
94 0060 003C0040 .word 1073757184
95 .cfi_endproc
96 .LFE29:
98 .section .text.SPI_Init,"ax",%progbits
99 .align 2
100 .global SPI_Init
101 .thumb
102 .thumb_func
104 SPI_Init:
105 .LFB30:
146:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
147:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
148:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
149:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
150:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
151:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Initializes the SPIx peripheral according to the specified
152:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * parameters in the SPI_InitStruct.
153:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
154:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_InitStruct: pointer to a SPI_InitTypeDef structure that
155:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * contains the configuration information for the specified SPI peripheral.
156:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
157:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
158:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct)
159:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
106 .loc 1 159 0
107 .cfi_startproc
108 @ args = 0, pretend = 0, frame = 0
109 @ frame_needed = 0, uses_anonymous_args = 0
110 @ link register save eliminated.
111 .LVL12:
112 0000 10B4 push {r4}
113 .cfi_def_cfa_offset 4
114 .cfi_offset 4, -4
115 .LVL13:
160:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t tmpreg = 0;
161:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
162:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* check the parameters */
163:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
164:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
165:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the SPI parameters */
166:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_DIRECTION_MODE(SPI_InitStruct->SPI_Direction));
167:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_MODE(SPI_InitStruct->SPI_Mode));
168:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_DATASIZE(SPI_InitStruct->SPI_DataSize));
169:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_CPOL(SPI_InitStruct->SPI_CPOL));
170:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_CPHA(SPI_InitStruct->SPI_CPHA));
171:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_NSS(SPI_InitStruct->SPI_NSS));
172:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_InitStruct->SPI_BaudRatePrescaler));
173:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_FIRST_BIT(SPI_InitStruct->SPI_FirstBit));
174:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_CRC_POLYNOMIAL(SPI_InitStruct->SPI_CRCPolynomial));
175:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
176:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /*---------------------------- SPIx CR1 Configuration ------------------------*/
177:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the SPIx CR1 value */
178:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmpreg = SPIx->CR1;
116 .loc 1 178 0
117 0002 0388 ldrh r3, [r0]
118 .LVL14:
179:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Clear BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, MSTR, CPOL and CPHA bits */
180:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmpreg &= CR1_CLEAR_Mask;
119 .loc 1 180 0
120 0004 03F44154 and r4, r3, #12352
121 .LVL15:
181:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Configure SPIx: direction, NSS management, first transmitted bit, BaudRate prescaler
182:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** master/salve mode, CPOL and CPHA */
183:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set BIDImode, BIDIOE and RxONLY bits according to SPI_Direction value */
184:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set SSM, SSI and MSTR bits according to SPI_Mode and SPI_NSS values */
185:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set LSBFirst bit according to SPI_FirstBit value */
186:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set BR bits according to SPI_BaudRatePrescaler value */
187:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set CPOL bit according to SPI_CPOL value */
188:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set CPHA bit according to SPI_CPHA value */
189:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmpreg |= (uint16_t)((uint32_t)SPI_InitStruct->SPI_Direction | SPI_InitStruct->SPI_Mode |
122 .loc 1 189 0
123 0008 4A88 ldrh r2, [r1, #2]
124 000a 0B88 ldrh r3, [r1]
125 000c 1343 orrs r3, r3, r2
126 000e 8A88 ldrh r2, [r1, #4]
127 0010 1343 orrs r3, r3, r2
128 0012 CA88 ldrh r2, [r1, #6]
129 0014 1343 orrs r3, r3, r2
130 0016 0A89 ldrh r2, [r1, #8]
131 0018 1343 orrs r3, r3, r2
132 001a 4A89 ldrh r2, [r1, #10]
133 001c 1343 orrs r3, r3, r2
134 001e 8A89 ldrh r2, [r1, #12]
135 0020 1343 orrs r3, r3, r2
136 0022 CA89 ldrh r2, [r1, #14]
137 0024 1343 orrs r3, r3, r2
138 0026 2343 orrs r3, r3, r4
139 0028 9BB2 uxth r3, r3
140 .LVL16:
190:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_DataSize | SPI_InitStruct->SPI_CPOL |
191:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_CPHA | SPI_InitStruct->SPI_NSS |
192:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_BaudRatePrescaler | SPI_InitStruct->SPI_FirstBit);
193:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Write to SPIx CR1 */
194:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 = tmpreg;
141 .loc 1 194 0
142 002a 0380 strh r3, [r0] @ movhi
195:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
196:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */
197:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SCFGR &= SPI_Mode_Select;
143 .loc 1 197 0
144 002c 838B ldrh r3, [r0, #28]
145 .LVL17:
146 002e 23F40063 bic r3, r3, #2048
147 0032 1B04 lsls r3, r3, #16
148 0034 1B0C lsrs r3, r3, #16
149 0036 8383 strh r3, [r0, #28] @ movhi
150 .LVL18:
198:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
199:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /*---------------------------- SPIx CRCPOLY Configuration --------------------*/
200:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Write to SPIx CRCPOLY */
201:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CRCPR = SPI_InitStruct->SPI_CRCPolynomial;
151 .loc 1 201 0
152 0038 0B8A ldrh r3, [r1, #16]
153 003a 0382 strh r3, [r0, #16] @ movhi
202:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
154 .loc 1 202 0
155 003c 5DF8044B ldr r4, [sp], #4
156 .cfi_restore 4
157 .cfi_def_cfa_offset 0
158 0040 7047 bx lr
159 .cfi_endproc
160 .LFE30:
162 0042 00BF .section .text.I2S_Init,"ax",%progbits
163 .align 2
164 .global I2S_Init
165 .thumb
166 .thumb_func
168 I2S_Init:
169 .LFB31:
203:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
204:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
205:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Initializes the SPIx peripheral according to the specified
206:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * parameters in the I2S_InitStruct.
207:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 2 or 3 to select the SPI peripheral
208:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * (configured in I2S mode).
209:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param I2S_InitStruct: pointer to an I2S_InitTypeDef structure that
210:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * contains the configuration information for the specified SPI peripheral
211:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * configured in I2S mode.
212:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @note
213:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * The function calculates the optimal prescaler needed to obtain the most
214:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * accurate audio frequency (depending on the I2S clock source, the PLL values
215:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * and the product configuration). But in case the prescaler value is greater
216:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * than 511, the default value (0x02) will be configured instead. *
217:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
218:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
219:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct)
220:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
170 .loc 1 220 0
171 .cfi_startproc
172 @ args = 0, pretend = 0, frame = 24
173 @ frame_needed = 0, uses_anonymous_args = 0
174 .LVL19:
175 0000 F0B5 push {r4, r5, r6, r7, lr}
176 .cfi_def_cfa_offset 20
177 .cfi_offset 4, -20
178 .cfi_offset 5, -16
179 .cfi_offset 6, -12
180 .cfi_offset 7, -8
181 .cfi_offset 14, -4
182 0002 87B0 sub sp, sp, #28
183 .cfi_def_cfa_offset 48
184 0004 0546 mov r5, r0
185 0006 0C46 mov r4, r1
186 .LVL20:
221:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t tmpreg = 0, i2sdiv = 2, i2sodd = 0, packetlength = 1;
222:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint32_t tmp = 0;
223:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_ClocksTypeDef RCC_Clocks;
224:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint32_t sourceclock = 0;
225:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
226:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the I2S parameters */
227:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_23_PERIPH(SPIx));
228:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_I2S_MODE(I2S_InitStruct->I2S_Mode));
229:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_I2S_STANDARD(I2S_InitStruct->I2S_Standard));
230:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_I2S_DATA_FORMAT(I2S_InitStruct->I2S_DataFormat));
231:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_I2S_MCLK_OUTPUT(I2S_InitStruct->I2S_MCLKOutput));
232:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_I2S_AUDIO_FREQ(I2S_InitStruct->I2S_AudioFreq));
233:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_I2S_CPOL(I2S_InitStruct->I2S_CPOL));
234:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
235:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /*----------------------- SPIx I2SCFGR & I2SPR Configuration -----------------*/
236:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Clear I2SMOD, I2SE, I2SCFG, PCMSYNC, I2SSTD, CKPOL, DATLEN and CHLEN bits */
237:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SCFGR &= I2SCFGR_CLEAR_Mask;
187 .loc 1 237 0
188 0008 838B ldrh r3, [r0, #28]
189 000a 9BB2 uxth r3, r3
190 000c 23F47B63 bic r3, r3, #4016
191 0010 23F00F03 bic r3, r3, #15
192 0014 9BB2 uxth r3, r3
193 0016 8383 strh r3, [r0, #28] @ movhi
238:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SPR = 0x0002;
194 .loc 1 238 0
195 0018 0223 movs r3, #2
196 001a 0384 strh r3, [r0, #32] @ movhi
239:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
240:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the I2SCFGR register value */
241:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmpreg = SPIx->I2SCFGR;
197 .loc 1 241 0
198 001c 868B ldrh r6, [r0, #28]
199 001e B6B2 uxth r6, r6
200 .LVL21:
242:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
243:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* If the default value has to be written, reinitialize i2sdiv and i2sodd*/
244:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if(I2S_InitStruct->I2S_AudioFreq == I2S_AudioFreq_Default)
201 .loc 1 244 0
202 0020 8B68 ldr r3, [r1, #8]
203 0022 022B cmp r3, #2
204 0024 26D0 beq .L15
245:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
246:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sodd = (uint16_t)0;
247:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sdiv = (uint16_t)2;
248:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
249:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* If the requested audio frequency is not the default, compute the prescaler */
250:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
251:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
252:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the frame length (For the Prescaler computing) */
253:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if(I2S_InitStruct->I2S_DataFormat == I2S_DataFormat_16b)
205 .loc 1 253 0
206 0026 8B88 ldrh r3, [r1, #4]
254:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
255:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Packet length is 16 bits */
256:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** packetlength = 1;
257:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
258:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
259:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
260:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Packet length is 32 bits */
261:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** packetlength = 2;
207 .loc 1 261 0
208 0028 002B cmp r3, #0
209 002a 0CBF ite eq
210 002c 0127 moveq r7, #1
211 002e 0227 movne r7, #2
212 .LVL22:
262:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
263:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
264:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the I2S clock source mask depending on the peripheral number */
265:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if(((uint32_t)SPIx) == SPI2_BASE)
266:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
267:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* The mask is relative to I2S2 */
268:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = I2S2_CLOCK_SRC;
269:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
270:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
271:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
272:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* The mask is relative to I2S3 */
273:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = I2S3_CLOCK_SRC;
274:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
275:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
276:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the I2S clock source configuration depending on the Device:
277:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** Only Connectivity line devices have the PLL3 VCO clock */
278:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #ifdef STM32F10X_CL
279:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if((RCC->CFGR2 & tmp) != 0)
280:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
281:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the configuration bits of RCC PLL3 multiplier */
282:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = (uint32_t)((RCC->CFGR2 & I2S_MUL_MASK) >> 12);
283:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
284:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the value of the PLL3 multiplier */
285:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if((tmp > 5) && (tmp < 15))
286:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
287:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Multiplier is between 8 and 14 (value 15 is forbidden) */
288:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp += 2;
289:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
290:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
291:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
292:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (tmp == 15)
293:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
294:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Multiplier is 20 */
295:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = 20;
296:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
297:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
298:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the PREDIV2 value */
299:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** sourceclock = (uint32_t)(((RCC->CFGR2 & I2S_DIV_MASK) >> 4) + 1);
300:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
301:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Calculate the Source Clock frequency based on PLL3 and PREDIV2 values */
302:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** sourceclock = (uint32_t) ((HSE_Value / sourceclock) * tmp * 2);
303:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
304:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
305:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
306:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* I2S Clock source is System clock: Get System Clock frequency */
307:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_GetClocksFreq(&RCC_Clocks);
308:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
309:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the source clock value: based on System Clock value */
310:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** sourceclock = RCC_Clocks.SYSCLK_Frequency;
311:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
312:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #else /* STM32F10X_HD */
313:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* I2S Clock source is System clock: Get System Clock frequency */
314:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** RCC_GetClocksFreq(&RCC_Clocks);
213 .loc 1 314 0
214 0030 01A8 add r0, sp, #4
215 .LVL23:
216 0032 FFF7FEFF bl RCC_GetClocksFreq
217 .LVL24:
315:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
316:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the source clock value: based on System Clock value */
317:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** sourceclock = RCC_Clocks.SYSCLK_Frequency;
218 .loc 1 317 0
219 0036 019A ldr r2, [sp, #4]
220 .LVL25:
318:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** #endif /* STM32F10X_CL */
319:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
320:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Compute the Real divider depending on the MCLK output state with a floating point */
321:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if(I2S_InitStruct->I2S_MCLKOutput == I2S_MCLKOutput_Enable)
221 .loc 1 321 0
222 0038 E388 ldrh r3, [r4, #6]
223 003a B3F5007F cmp r3, #512
322:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
323:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* MCLK output is enabled */
324:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = (uint16_t)(((((sourceclock / 256) * 10) / I2S_InitStruct->I2S_AudioFreq)) + 5);
224 .loc 1 324 0
225 003e 0EBF itee eq
226 0040 130A lsreq r3, r2, #8
325:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
326:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
327:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
328:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* MCLK output is disabled */
329:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = (uint16_t)(((((sourceclock / (32 * packetlength)) *10 ) / I2S_InitStruct->I2S_AudioFreq
227 .loc 1 329 0
228 0042 7B01 lslne r3, r7, #5
229 0044 B2FBF3F3 udivne r3, r2, r3
230 0048 03EB8303 add r3, r3, r3, lsl #2
231 004c 5B00 lsls r3, r3, #1
232 004e A268 ldr r2, [r4, #8]
233 .LVL26:
234 0050 B3FBF2F3 udiv r3, r3, r2
235 0054 0533 adds r3, r3, #5
236 0056 9BB2 uxth r3, r3
237 .LVL27:
330:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
331:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
332:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Remove the floating point */
333:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmp = tmp / 10;
238 .loc 1 333 0
239 0058 124A ldr r2, .L19
240 005a A2FB0323 umull r2, r3, r2, r3
241 .LVL28:
242 005e DB08 lsrs r3, r3, #3
243 .LVL29:
334:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
335:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parity of the divider */
336:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sodd = (uint16_t)(tmp & (uint16_t)0x0001);
337:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
338:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Compute the i2sdiv prescaler */
339:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sdiv = (uint16_t)((tmp - i2sodd) / 2);
244 .loc 1 339 0
245 0060 03F00102 and r2, r3, #1
246 0064 5B08 lsrs r3, r3, #1
247 .LVL30:
340:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
341:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */
342:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sodd = (uint16_t) (i2sodd << 8);
343:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
344:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
345:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Test if the divider is 1 or 0 or greater than 0xFF */
346:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if ((i2sdiv < 2) || (i2sdiv > 0xFF))
248 .loc 1 346 0
249 0066 991E subs r1, r3, #2
250 0068 89B2 uxth r1, r1
251 006a FD29 cmp r1, #253
252 .LVL31:
253 006c 05D8 bhi .L17
342:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
254 .loc 1 342 0
255 006e 1202 lsls r2, r2, #8
256 .LVL32:
257 0070 92B2 uxth r2, r2
258 0072 04E0 b .L11
259 .LVL33:
260 .L15:
246:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sdiv = (uint16_t)2;
261 .loc 1 246 0
262 0074 0022 movs r2, #0
247:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
263 .loc 1 247 0
264 0076 0223 movs r3, #2
265 0078 01E0 b .L11
266 .LVL34:
267 .L17:
347:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
348:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set the default values */
349:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sdiv = 2;
350:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sodd = 0;
268 .loc 1 350 0
269 007a 0022 movs r2, #0
270 .LVL35:
349:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** i2sodd = 0;
271 .loc 1 349 0
272 007c 0223 movs r3, #2
273 .LVL36:
274 .L11:
275 007e 1343 orrs r3, r3, r2
276 .LVL37:
351:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
352:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
353:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Write to SPIx I2SPR register the computed value */
354:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SPR = (uint16_t)(i2sdiv | (uint16_t)(i2sodd | (uint16_t)I2S_InitStruct->I2S_MCLKOutput));
277 .loc 1 354 0
278 0080 E288 ldrh r2, [r4, #6]
279 .LVL38:
280 0082 1343 orrs r3, r3, r2
281 0084 2B84 strh r3, [r5, #32] @ movhi
282 0086 2388 ldrh r3, [r4]
283 0088 1E43 orrs r6, r6, r3
284 .LVL39:
285 008a 46F40066 orr r6, r6, #2048
286 008e 6388 ldrh r3, [r4, #2]
287 0090 3343 orrs r3, r3, r6
288 0092 A288 ldrh r2, [r4, #4]
289 0094 1343 orrs r3, r3, r2
355:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
356:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Configure the I2S with the SPI_InitStruct values */
357:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** tmpreg |= (uint16_t)(I2S_Mode_Select | (uint16_t)(I2S_InitStruct->I2S_Mode | \
290 .loc 1 357 0
291 0096 A289 ldrh r2, [r4, #12]
292 0098 1343 orrs r3, r3, r2
293 009a 9BB2 uxth r3, r3
294 .LVL40:
358:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** (uint16_t)(I2S_InitStruct->I2S_Standard | (uint16_t)(I2S_InitStruct->I2S_DataForm
359:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** (uint16_t)I2S_InitStruct->I2S_CPOL))));
360:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
361:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Write to SPIx I2SCFGR */
362:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SCFGR = tmpreg;
295 .loc 1 362 0
296 009c AB83 strh r3, [r5, #28] @ movhi
363:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
297 .loc 1 363 0
298 009e 07B0 add sp, sp, #28
299 .cfi_def_cfa_offset 20
300 @ sp needed
301 00a0 F0BD pop {r4, r5, r6, r7, pc}
302 .LVL41:
303 .L20:
304 00a2 00BF .align 2
305 .L19:
306 00a4 CDCCCCCC .word -858993459
307 .cfi_endproc
308 .LFE31:
310 .section .text.SPI_StructInit,"ax",%progbits
311 .align 2
312 .global SPI_StructInit
313 .thumb
314 .thumb_func
316 SPI_StructInit:
317 .LFB32:
364:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
365:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
366:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Fills each SPI_InitStruct member with its default value.
367:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_InitStruct : pointer to a SPI_InitTypeDef structure which will be initialized.
368:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
369:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
370:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct)
371:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
318 .loc 1 371 0
319 .cfi_startproc
320 @ args = 0, pretend = 0, frame = 0
321 @ frame_needed = 0, uses_anonymous_args = 0
322 @ link register save eliminated.
323 .LVL42:
372:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /*--------------- Reset SPI init structure parameters values -----------------*/
373:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_Direction member */
374:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_Direction = SPI_Direction_2Lines_FullDuplex;
324 .loc 1 374 0
325 0000 0023 movs r3, #0
326 0002 0380 strh r3, [r0] @ movhi
375:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* initialize the SPI_Mode member */
376:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_Mode = SPI_Mode_Slave;
327 .loc 1 376 0
328 0004 4380 strh r3, [r0, #2] @ movhi
377:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* initialize the SPI_DataSize member */
378:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_DataSize = SPI_DataSize_8b;
329 .loc 1 378 0
330 0006 8380 strh r3, [r0, #4] @ movhi
379:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_CPOL member */
380:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_CPOL = SPI_CPOL_Low;
331 .loc 1 380 0
332 0008 C380 strh r3, [r0, #6] @ movhi
381:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_CPHA member */
382:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_CPHA = SPI_CPHA_1Edge;
333 .loc 1 382 0
334 000a 0381 strh r3, [r0, #8] @ movhi
383:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_NSS member */
384:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_NSS = SPI_NSS_Hard;
335 .loc 1 384 0
336 000c 4381 strh r3, [r0, #10] @ movhi
385:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_BaudRatePrescaler member */
386:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
337 .loc 1 386 0
338 000e 8381 strh r3, [r0, #12] @ movhi
387:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_FirstBit member */
388:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_FirstBit = SPI_FirstBit_MSB;
339 .loc 1 388 0
340 0010 C381 strh r3, [r0, #14] @ movhi
389:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the SPI_CRCPolynomial member */
390:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPI_InitStruct->SPI_CRCPolynomial = 7;
341 .loc 1 390 0
342 0012 0723 movs r3, #7
343 0014 0382 strh r3, [r0, #16] @ movhi
344 0016 7047 bx lr
345 .cfi_endproc
346 .LFE32:
348 .section .text.I2S_StructInit,"ax",%progbits
349 .align 2
350 .global I2S_StructInit
351 .thumb
352 .thumb_func
354 I2S_StructInit:
355 .LFB33:
391:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
392:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
393:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
394:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Fills each I2S_InitStruct member with its default value.
395:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param I2S_InitStruct : pointer to a I2S_InitTypeDef structure which will be initialized.
396:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
397:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
398:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct)
399:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
356 .loc 1 399 0
357 .cfi_startproc
358 @ args = 0, pretend = 0, frame = 0
359 @ frame_needed = 0, uses_anonymous_args = 0
360 @ link register save eliminated.
361 .LVL43:
400:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /*--------------- Reset I2S init structure parameters values -----------------*/
401:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the I2S_Mode member */
402:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** I2S_InitStruct->I2S_Mode = I2S_Mode_SlaveTx;
362 .loc 1 402 0
363 0000 0023 movs r3, #0
364 0002 0380 strh r3, [r0] @ movhi
403:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
404:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the I2S_Standard member */
405:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** I2S_InitStruct->I2S_Standard = I2S_Standard_Phillips;
365 .loc 1 405 0
366 0004 4380 strh r3, [r0, #2] @ movhi
406:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
407:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the I2S_DataFormat member */
408:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** I2S_InitStruct->I2S_DataFormat = I2S_DataFormat_16b;
367 .loc 1 408 0
368 0006 8380 strh r3, [r0, #4] @ movhi
409:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
410:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the I2S_MCLKOutput member */
411:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** I2S_InitStruct->I2S_MCLKOutput = I2S_MCLKOutput_Disable;
369 .loc 1 411 0
370 0008 C380 strh r3, [r0, #6] @ movhi
412:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
413:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the I2S_AudioFreq member */
414:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** I2S_InitStruct->I2S_AudioFreq = I2S_AudioFreq_Default;
371 .loc 1 414 0
372 000a 0222 movs r2, #2
373 000c 8260 str r2, [r0, #8]
415:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
416:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Initialize the I2S_CPOL member */
417:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** I2S_InitStruct->I2S_CPOL = I2S_CPOL_Low;
374 .loc 1 417 0
375 000e 8381 strh r3, [r0, #12] @ movhi
376 0010 7047 bx lr
377 .cfi_endproc
378 .LFE33:
380 0012 00BF .section .text.SPI_Cmd,"ax",%progbits
381 .align 2
382 .global SPI_Cmd
383 .thumb
384 .thumb_func
386 SPI_Cmd:
387 .LFB34:
418:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
419:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
420:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
421:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Enables or disables the specified SPI peripheral.
422:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
423:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param NewState: new state of the SPIx peripheral.
424:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be: ENABLE or DISABLE.
425:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
426:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
427:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState)
428:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
388 .loc 1 428 0
389 .cfi_startproc
390 @ args = 0, pretend = 0, frame = 0
391 @ frame_needed = 0, uses_anonymous_args = 0
392 @ link register save eliminated.
393 .LVL44:
429:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
430:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
431:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_FUNCTIONAL_STATE(NewState));
432:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (NewState != DISABLE)
394 .loc 1 432 0
395 0000 29B1 cbz r1, .L24
433:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
434:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI peripheral */
435:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 |= CR1_SPE_Set;
396 .loc 1 435 0
397 0002 0388 ldrh r3, [r0]
398 0004 9BB2 uxth r3, r3
399 0006 43F04003 orr r3, r3, #64
400 000a 0380 strh r3, [r0] @ movhi
401 000c 7047 bx lr
402 .L24:
436:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
437:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
438:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
439:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Disable the selected SPI peripheral */
440:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 &= CR1_SPE_Reset;
403 .loc 1 440 0
404 000e 0388 ldrh r3, [r0]
405 0010 23F04003 bic r3, r3, #64
406 0014 1B04 lsls r3, r3, #16
407 0016 1B0C lsrs r3, r3, #16
408 0018 0380 strh r3, [r0] @ movhi
409 001a 7047 bx lr
410 .cfi_endproc
411 .LFE34:
413 .section .text.I2S_Cmd,"ax",%progbits
414 .align 2
415 .global I2S_Cmd
416 .thumb
417 .thumb_func
419 I2S_Cmd:
420 .LFB35:
441:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
442:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
443:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
444:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
445:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Enables or disables the specified SPI peripheral (in I2S mode).
446:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 2 or 3 to select the SPI peripheral.
447:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param NewState: new state of the SPIx peripheral.
448:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be: ENABLE or DISABLE.
449:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
450:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
451:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState)
452:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
421 .loc 1 452 0
422 .cfi_startproc
423 @ args = 0, pretend = 0, frame = 0
424 @ frame_needed = 0, uses_anonymous_args = 0
425 @ link register save eliminated.
426 .LVL45:
453:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
454:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_23_PERIPH(SPIx));
455:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_FUNCTIONAL_STATE(NewState));
456:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (NewState != DISABLE)
427 .loc 1 456 0
428 0000 29B1 cbz r1, .L27
457:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
458:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI peripheral (in I2S mode) */
459:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SCFGR |= I2SCFGR_I2SE_Set;
429 .loc 1 459 0
430 0002 838B ldrh r3, [r0, #28]
431 0004 9BB2 uxth r3, r3
432 0006 43F48063 orr r3, r3, #1024
433 000a 8383 strh r3, [r0, #28] @ movhi
434 000c 7047 bx lr
435 .L27:
460:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
461:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
462:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
463:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Disable the selected SPI peripheral (in I2S mode) */
464:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->I2SCFGR &= I2SCFGR_I2SE_Reset;
436 .loc 1 464 0
437 000e 838B ldrh r3, [r0, #28]
438 0010 23F48063 bic r3, r3, #1024
439 0014 1B04 lsls r3, r3, #16
440 0016 1B0C lsrs r3, r3, #16
441 0018 8383 strh r3, [r0, #28] @ movhi
442 001a 7047 bx lr
443 .cfi_endproc
444 .LFE35:
446 .section .text.SPI_I2S_ITConfig,"ax",%progbits
447 .align 2
448 .global SPI_I2S_ITConfig
449 .thumb
450 .thumb_func
452 SPI_I2S_ITConfig:
453 .LFB36:
465:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
466:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
467:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
468:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
469:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Enables or disables the specified SPI/I2S interrupts.
470:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
471:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
472:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 2 or 3 in I2S mode
473:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_I2S_IT: specifies the SPI/I2S interrupt source to be enabled or disabled.
474:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
475:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_IT_TXE: Tx buffer empty interrupt mask
476:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_IT_RXNE: Rx buffer not empty interrupt mask
477:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_IT_ERR: Error interrupt mask
478:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param NewState: new state of the specified SPI/I2S interrupt.
479:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be: ENABLE or DISABLE.
480:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
481:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
482:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState)
483:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
454 .loc 1 483 0
455 .cfi_startproc
456 @ args = 0, pretend = 0, frame = 0
457 @ frame_needed = 0, uses_anonymous_args = 0
458 @ link register save eliminated.
459 .LVL46:
484:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t itpos = 0, itmask = 0 ;
485:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
486:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
487:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_FUNCTIONAL_STATE(NewState));
488:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_I2S_CONFIG_IT(SPI_I2S_IT));
489:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
490:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the SPI/I2S IT index */
491:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** itpos = SPI_I2S_IT >> 4;
492:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
493:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set the IT mask */
494:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** itmask = (uint16_t)1 << (uint16_t)itpos;
460 .loc 1 494 0
461 0000 0909 lsrs r1, r1, #4
462 .LVL47:
463 0002 0123 movs r3, #1
464 0004 8B40 lsls r3, r3, r1
465 0006 9BB2 uxth r3, r3
466 .LVL48:
495:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
496:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (NewState != DISABLE)
467 .loc 1 496 0
468 0008 22B1 cbz r2, .L30
497:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
498:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI/I2S interrupt */
499:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR2 |= itmask;
469 .loc 1 499 0
470 000a 8288 ldrh r2, [r0, #4]
471 .LVL49:
472 000c 92B2 uxth r2, r2
473 000e 1343 orrs r3, r3, r2
474 .LVL50:
475 0010 8380 strh r3, [r0, #4] @ movhi
476 0012 7047 bx lr
477 .LVL51:
478 .L30:
500:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
501:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
502:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
503:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Disable the selected SPI/I2S interrupt */
504:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR2 &= (uint16_t)~itmask;
479 .loc 1 504 0
480 0014 8288 ldrh r2, [r0, #4]
481 .LVL52:
482 0016 92B2 uxth r2, r2
483 0018 22EA0303 bic r3, r2, r3
484 .LVL53:
485 001c 8380 strh r3, [r0, #4] @ movhi
486 001e 7047 bx lr
487 .cfi_endproc
488 .LFE36:
490 .section .text.SPI_I2S_DMACmd,"ax",%progbits
491 .align 2
492 .global SPI_I2S_DMACmd
493 .thumb
494 .thumb_func
496 SPI_I2S_DMACmd:
497 .LFB37:
505:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
506:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
507:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
508:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
509:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Enables or disables the SPIx/I2Sx DMA interface.
510:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
511:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
512:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 2 or 3 in I2S mode
513:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_I2S_DMAReq: specifies the SPI/I2S DMA transfer request to be enabled or disabled.
514:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be any combination of the following values:
515:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_DMAReq_Tx: Tx buffer DMA transfer request
516:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_DMAReq_Rx: Rx buffer DMA transfer request
517:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param NewState: new state of the selected SPI/I2S DMA transfer request.
518:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be: ENABLE or DISABLE.
519:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
520:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
521:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState)
522:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
498 .loc 1 522 0
499 .cfi_startproc
500 @ args = 0, pretend = 0, frame = 0
501 @ frame_needed = 0, uses_anonymous_args = 0
502 @ link register save eliminated.
503 .LVL54:
523:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
524:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
525:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_FUNCTIONAL_STATE(NewState));
526:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_I2S_DMAREQ(SPI_I2S_DMAReq));
527:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (NewState != DISABLE)
504 .loc 1 527 0
505 0000 22B1 cbz r2, .L33
528:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
529:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI/I2S DMA requests */
530:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR2 |= SPI_I2S_DMAReq;
506 .loc 1 530 0
507 0002 8388 ldrh r3, [r0, #4]
508 0004 9BB2 uxth r3, r3
509 0006 1943 orrs r1, r1, r3
510 .LVL55:
511 0008 8180 strh r1, [r0, #4] @ movhi
512 000a 7047 bx lr
513 .LVL56:
514 .L33:
531:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
532:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
533:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
534:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Disable the selected SPI/I2S DMA requests */
535:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR2 &= (uint16_t)~SPI_I2S_DMAReq;
515 .loc 1 535 0
516 000c 8388 ldrh r3, [r0, #4]
517 000e 9BB2 uxth r3, r3
518 0010 23EA0101 bic r1, r3, r1
519 .LVL57:
520 0014 8180 strh r1, [r0, #4] @ movhi
521 0016 7047 bx lr
522 .cfi_endproc
523 .LFE37:
525 .section .text.SPI_I2S_SendData,"ax",%progbits
526 .align 2
527 .global SPI_I2S_SendData
528 .thumb
529 .thumb_func
531 SPI_I2S_SendData:
532 .LFB38:
536:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
537:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
538:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
539:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
540:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Transmits a Data through the SPIx/I2Sx peripheral.
541:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
542:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
543:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 2 or 3 in I2S mode
544:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param Data : Data to be transmitted.
545:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
546:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
547:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data)
548:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
533 .loc 1 548 0
534 .cfi_startproc
535 @ args = 0, pretend = 0, frame = 0
536 @ frame_needed = 0, uses_anonymous_args = 0
537 @ link register save eliminated.
538 .LVL58:
549:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
550:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
551:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
552:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Write in the DR register the data to be sent */
553:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->DR = Data;
539 .loc 1 553 0
540 0000 8181 strh r1, [r0, #12] @ movhi
541 0002 7047 bx lr
542 .cfi_endproc
543 .LFE38:
545 .section .text.SPI_I2S_ReceiveData,"ax",%progbits
546 .align 2
547 .global SPI_I2S_ReceiveData
548 .thumb
549 .thumb_func
551 SPI_I2S_ReceiveData:
552 .LFB39:
554:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
555:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
556:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
557:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Returns the most recent received data by the SPIx/I2Sx peripheral.
558:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
559:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
560:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 2 or 3 in I2S mode
561:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval The value of the received data.
562:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
563:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx)
564:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
553 .loc 1 564 0
554 .cfi_startproc
555 @ args = 0, pretend = 0, frame = 0
556 @ frame_needed = 0, uses_anonymous_args = 0
557 @ link register save eliminated.
558 .LVL59:
565:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
566:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
567:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
568:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Return the data in the DR register */
569:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** return SPIx->DR;
559 .loc 1 569 0
560 0000 8089 ldrh r0, [r0, #12]
561 .LVL60:
570:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
562 .loc 1 570 0
563 0002 80B2 uxth r0, r0
564 0004 7047 bx lr
565 .cfi_endproc
566 .LFE39:
568 0006 00BF .section .text.SPI_NSSInternalSoftwareConfig,"ax",%progbits
569 .align 2
570 .global SPI_NSSInternalSoftwareConfig
571 .thumb
572 .thumb_func
574 SPI_NSSInternalSoftwareConfig:
575 .LFB40:
571:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
572:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
573:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Configures internally by software the NSS pin for the selected SPI.
574:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
575:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_NSSInternalSoft: specifies the SPI NSS internal state.
576:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
577:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_NSSInternalSoft_Set: Set NSS pin internally
578:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_NSSInternalSoft_Reset: Reset NSS pin internally
579:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
580:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
581:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft)
582:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
576 .loc 1 582 0
577 .cfi_startproc
578 @ args = 0, pretend = 0, frame = 0
579 @ frame_needed = 0, uses_anonymous_args = 0
580 @ link register save eliminated.
581 .LVL61:
583:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
584:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
585:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_NSS_INTERNAL(SPI_NSSInternalSoft));
586:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (SPI_NSSInternalSoft != SPI_NSSInternalSoft_Reset)
582 .loc 1 586 0
583 0000 4FF6FF63 movw r3, #65279
584 0004 9942 cmp r1, r3
585 0006 05D0 beq .L38
587:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
588:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set NSS pin internally by software */
589:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 |= SPI_NSSInternalSoft_Set;
586 .loc 1 589 0
587 0008 0388 ldrh r3, [r0]
588 000a 9BB2 uxth r3, r3
589 000c 43F48073 orr r3, r3, #256
590 0010 0380 strh r3, [r0] @ movhi
591 0012 7047 bx lr
592 .L38:
590:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
591:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
592:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
593:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Reset NSS pin internally by software */
594:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 &= SPI_NSSInternalSoft_Reset;
593 .loc 1 594 0
594 0014 0388 ldrh r3, [r0]
595 0016 23F48073 bic r3, r3, #256
596 001a 1B04 lsls r3, r3, #16
597 001c 1B0C lsrs r3, r3, #16
598 001e 0380 strh r3, [r0] @ movhi
599 0020 7047 bx lr
600 .cfi_endproc
601 .LFE40:
603 0022 00BF .section .text.SPI_SSOutputCmd,"ax",%progbits
604 .align 2
605 .global SPI_SSOutputCmd
606 .thumb
607 .thumb_func
609 SPI_SSOutputCmd:
610 .LFB41:
595:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
596:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
597:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
598:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
599:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Enables or disables the SS output for the selected SPI.
600:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
601:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param NewState: new state of the SPIx SS output.
602:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be: ENABLE or DISABLE.
603:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
604:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
605:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState)
606:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
611 .loc 1 606 0
612 .cfi_startproc
613 @ args = 0, pretend = 0, frame = 0
614 @ frame_needed = 0, uses_anonymous_args = 0
615 @ link register save eliminated.
616 .LVL62:
607:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
608:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
609:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_FUNCTIONAL_STATE(NewState));
610:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (NewState != DISABLE)
617 .loc 1 610 0
618 0000 29B1 cbz r1, .L41
611:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
612:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI SS output */
613:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR2 |= CR2_SSOE_Set;
619 .loc 1 613 0
620 0002 8388 ldrh r3, [r0, #4]
621 0004 9BB2 uxth r3, r3
622 0006 43F00403 orr r3, r3, #4
623 000a 8380 strh r3, [r0, #4] @ movhi
624 000c 7047 bx lr
625 .L41:
614:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
615:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
616:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
617:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Disable the selected SPI SS output */
618:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR2 &= CR2_SSOE_Reset;
626 .loc 1 618 0
627 000e 8388 ldrh r3, [r0, #4]
628 0010 23F00403 bic r3, r3, #4
629 0014 1B04 lsls r3, r3, #16
630 0016 1B0C lsrs r3, r3, #16
631 0018 8380 strh r3, [r0, #4] @ movhi
632 001a 7047 bx lr
633 .cfi_endproc
634 .LFE41:
636 .section .text.SPI_DataSizeConfig,"ax",%progbits
637 .align 2
638 .global SPI_DataSizeConfig
639 .thumb
640 .thumb_func
642 SPI_DataSizeConfig:
643 .LFB42:
619:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
620:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
621:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
622:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
623:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Configures the data size for the selected SPI.
624:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
625:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_DataSize: specifies the SPI data size.
626:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
627:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_DataSize_16b: Set data frame format to 16bit
628:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_DataSize_8b: Set data frame format to 8bit
629:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
630:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
631:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize)
632:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
644 .loc 1 632 0
645 .cfi_startproc
646 @ args = 0, pretend = 0, frame = 0
647 @ frame_needed = 0, uses_anonymous_args = 0
648 @ link register save eliminated.
649 .LVL63:
633:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
634:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
635:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_DATASIZE(SPI_DataSize));
636:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Clear DFF bit */
637:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 &= (uint16_t)~SPI_DataSize_16b;
650 .loc 1 637 0
651 0000 0388 ldrh r3, [r0]
652 0002 23F40063 bic r3, r3, #2048
653 0006 1B04 lsls r3, r3, #16
654 0008 1B0C lsrs r3, r3, #16
655 000a 0380 strh r3, [r0] @ movhi
638:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set new DFF bit value */
639:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 |= SPI_DataSize;
656 .loc 1 639 0
657 000c 0388 ldrh r3, [r0]
658 000e 9BB2 uxth r3, r3
659 0010 1943 orrs r1, r1, r3
660 .LVL64:
661 0012 0180 strh r1, [r0] @ movhi
662 0014 7047 bx lr
663 .cfi_endproc
664 .LFE42:
666 0016 00BF .section .text.SPI_TransmitCRC,"ax",%progbits
667 .align 2
668 .global SPI_TransmitCRC
669 .thumb
670 .thumb_func
672 SPI_TransmitCRC:
673 .LFB43:
640:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
641:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
642:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
643:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Transmit the SPIx CRC value.
644:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
645:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
646:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
647:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_TransmitCRC(SPI_TypeDef* SPIx)
648:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
674 .loc 1 648 0
675 .cfi_startproc
676 @ args = 0, pretend = 0, frame = 0
677 @ frame_needed = 0, uses_anonymous_args = 0
678 @ link register save eliminated.
679 .LVL65:
649:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
650:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
651:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
652:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI CRC transmission */
653:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 |= CR1_CRCNext_Set;
680 .loc 1 653 0
681 0000 0388 ldrh r3, [r0]
682 0002 9BB2 uxth r3, r3
683 0004 43F48053 orr r3, r3, #4096
684 0008 0380 strh r3, [r0] @ movhi
685 000a 7047 bx lr
686 .cfi_endproc
687 .LFE43:
689 .section .text.SPI_CalculateCRC,"ax",%progbits
690 .align 2
691 .global SPI_CalculateCRC
692 .thumb
693 .thumb_func
695 SPI_CalculateCRC:
696 .LFB44:
654:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
655:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
656:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
657:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Enables or disables the CRC value calculation of the transferred bytes.
658:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
659:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param NewState: new state of the SPIx CRC value calculation.
660:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be: ENABLE or DISABLE.
661:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
662:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
663:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState)
664:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
697 .loc 1 664 0
698 .cfi_startproc
699 @ args = 0, pretend = 0, frame = 0
700 @ frame_needed = 0, uses_anonymous_args = 0
701 @ link register save eliminated.
702 .LVL66:
665:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
666:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
667:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_FUNCTIONAL_STATE(NewState));
668:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (NewState != DISABLE)
703 .loc 1 668 0
704 0000 29B1 cbz r1, .L46
669:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
670:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Enable the selected SPI CRC calculation */
671:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 |= CR1_CRCEN_Set;
705 .loc 1 671 0
706 0002 0388 ldrh r3, [r0]
707 0004 9BB2 uxth r3, r3
708 0006 43F40053 orr r3, r3, #8192
709 000a 0380 strh r3, [r0] @ movhi
710 000c 7047 bx lr
711 .L46:
672:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
673:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
674:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
675:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Disable the selected SPI CRC calculation */
676:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 &= CR1_CRCEN_Reset;
712 .loc 1 676 0
713 000e 0388 ldrh r3, [r0]
714 0010 23F40053 bic r3, r3, #8192
715 0014 1B04 lsls r3, r3, #16
716 0016 1B0C lsrs r3, r3, #16
717 0018 0380 strh r3, [r0] @ movhi
718 001a 7047 bx lr
719 .cfi_endproc
720 .LFE44:
722 .section .text.SPI_GetCRC,"ax",%progbits
723 .align 2
724 .global SPI_GetCRC
725 .thumb
726 .thumb_func
728 SPI_GetCRC:
729 .LFB45:
677:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
678:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
679:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
680:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
681:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Returns the transmit or the receive CRC register value for the specified SPI.
682:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
683:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_CRC: specifies the CRC register to be read.
684:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
685:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_CRC_Tx: Selects Tx CRC register
686:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_CRC_Rx: Selects Rx CRC register
687:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval The selected CRC register value..
688:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
689:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC)
690:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
730 .loc 1 690 0
731 .cfi_startproc
732 @ args = 0, pretend = 0, frame = 0
733 @ frame_needed = 0, uses_anonymous_args = 0
734 @ link register save eliminated.
735 .LVL67:
691:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t crcreg = 0;
692:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
693:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
694:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_CRC(SPI_CRC));
695:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (SPI_CRC != SPI_CRC_Rx)
736 .loc 1 695 0
737 0000 0129 cmp r1, #1
696:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
697:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the Tx CRC register */
698:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** crcreg = SPIx->TXCRCR;
738 .loc 1 698 0
739 0002 14BF ite ne
740 0004 008B ldrhne r0, [r0, #24]
741 .LVL68:
699:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
700:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
701:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
702:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the Rx CRC register */
703:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** crcreg = SPIx->RXCRCR;
742 .loc 1 703 0
743 0006 808A ldrheq r0, [r0, #20]
744 0008 80B2 uxth r0, r0
745 .LVL69:
704:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
705:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Return the selected CRC register */
706:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** return crcreg;
707:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
746 .loc 1 707 0
747 000a 7047 bx lr
748 .cfi_endproc
749 .LFE45:
751 .section .text.SPI_GetCRCPolynomial,"ax",%progbits
752 .align 2
753 .global SPI_GetCRCPolynomial
754 .thumb
755 .thumb_func
757 SPI_GetCRCPolynomial:
758 .LFB46:
708:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
709:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
710:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Returns the CRC Polynomial register value for the specified SPI.
711:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
712:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval The CRC Polynomial register value.
713:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
714:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx)
715:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
759 .loc 1 715 0
760 .cfi_startproc
761 @ args = 0, pretend = 0, frame = 0
762 @ frame_needed = 0, uses_anonymous_args = 0
763 @ link register save eliminated.
764 .LVL70:
716:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
717:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
718:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
719:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Return the CRC polynomial register */
720:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** return SPIx->CRCPR;
765 .loc 1 720 0
766 0000 008A ldrh r0, [r0, #16]
767 .LVL71:
721:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
768 .loc 1 721 0
769 0002 80B2 uxth r0, r0
770 0004 7047 bx lr
771 .cfi_endproc
772 .LFE46:
774 0006 00BF .section .text.SPI_BiDirectionalLineConfig,"ax",%progbits
775 .align 2
776 .global SPI_BiDirectionalLineConfig
777 .thumb
778 .thumb_func
780 SPI_BiDirectionalLineConfig:
781 .LFB47:
722:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
723:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
724:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Selects the data transfer direction in bi-directional mode for the specified SPI.
725:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.
726:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_Direction: specifies the data transfer direction in bi-directional mode.
727:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
728:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_Direction_Tx: Selects Tx transmission direction
729:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_Direction_Rx: Selects Rx receive direction
730:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
731:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
732:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction)
733:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
782 .loc 1 733 0
783 .cfi_startproc
784 @ args = 0, pretend = 0, frame = 0
785 @ frame_needed = 0, uses_anonymous_args = 0
786 @ link register save eliminated.
787 .LVL72:
734:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
735:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
736:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_DIRECTION(SPI_Direction));
737:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (SPI_Direction == SPI_Direction_Tx)
788 .loc 1 737 0
789 0000 B1F5804F cmp r1, #16384
790 0004 05D1 bne .L53
738:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
739:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set the Tx only mode */
740:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 |= SPI_Direction_Tx;
791 .loc 1 740 0
792 0006 0388 ldrh r3, [r0]
793 0008 9BB2 uxth r3, r3
794 000a 43F48043 orr r3, r3, #16384
795 000e 0380 strh r3, [r0] @ movhi
796 0010 7047 bx lr
797 .L53:
741:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
742:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
743:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
744:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set the Rx only mode */
745:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->CR1 &= SPI_Direction_Rx;
798 .loc 1 745 0
799 0012 0388 ldrh r3, [r0]
800 0014 23F48043 bic r3, r3, #16384
801 0018 1B04 lsls r3, r3, #16
802 001a 1B0C lsrs r3, r3, #16
803 001c 0380 strh r3, [r0] @ movhi
804 001e 7047 bx lr
805 .cfi_endproc
806 .LFE47:
808 .section .text.SPI_I2S_GetFlagStatus,"ax",%progbits
809 .align 2
810 .global SPI_I2S_GetFlagStatus
811 .thumb
812 .thumb_func
814 SPI_I2S_GetFlagStatus:
815 .LFB48:
746:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
747:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
748:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
749:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
750:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Checks whether the specified SPI/I2S flag is set or not.
751:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
752:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
753:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 2 or 3 in I2S mode
754:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_I2S_FLAG: specifies the SPI/I2S flag to check.
755:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
756:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_FLAG_TXE: Transmit buffer empty flag.
757:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_FLAG_RXNE: Receive buffer not empty flag.
758:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_FLAG_BSY: Busy flag.
759:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_FLAG_OVR: Overrun flag.
760:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_FLAG_MODF: Mode Fault flag.
761:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_FLAG_CRCERR: CRC Error flag.
762:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg I2S_FLAG_UDR: Underrun Error flag.
763:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg I2S_FLAG_CHSIDE: Channel Side flag.
764:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval The new state of SPI_I2S_FLAG (SET or RESET).
765:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
766:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG)
767:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
816 .loc 1 767 0
817 .cfi_startproc
818 @ args = 0, pretend = 0, frame = 0
819 @ frame_needed = 0, uses_anonymous_args = 0
820 @ link register save eliminated.
821 .LVL73:
768:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** FlagStatus bitstatus = RESET;
769:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
770:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
771:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_I2S_GET_FLAG(SPI_I2S_FLAG));
772:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the status of the specified SPI/I2S flag */
773:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if ((SPIx->SR & SPI_I2S_FLAG) != (uint16_t)RESET)
822 .loc 1 773 0
823 0000 0389 ldrh r3, [r0, #8]
824 .LVL74:
825 0002 1942 tst r1, r3
774:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
775:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI_I2S_FLAG is set */
776:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** bitstatus = SET;
777:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
778:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
779:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
780:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI_I2S_FLAG is reset */
781:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** bitstatus = RESET;
782:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
783:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Return the SPI_I2S_FLAG status */
784:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** return bitstatus;
785:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
826 .loc 1 785 0
827 0004 14BF ite ne
828 0006 0120 movne r0, #1
829 .LVL75:
830 0008 0020 moveq r0, #0
831 000a 7047 bx lr
832 .cfi_endproc
833 .LFE48:
835 .section .text.SPI_I2S_ClearFlag,"ax",%progbits
836 .align 2
837 .global SPI_I2S_ClearFlag
838 .thumb
839 .thumb_func
841 SPI_I2S_ClearFlag:
842 .LFB49:
786:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
787:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
788:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Clears the SPIx CRC Error (CRCERR) flag.
789:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
790:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
791:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_I2S_FLAG: specifies the SPI flag to clear.
792:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This function clears only CRCERR flag.
793:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @note
794:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - OVR (OverRun error) flag is cleared by software sequence: a read
795:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * operation to SPI_DR register (SPI_I2S_ReceiveData()) followed by a read
796:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * operation to SPI_SR register (SPI_I2S_GetFlagStatus()).
797:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - UDR (UnderRun error) flag is cleared by a read operation to
798:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * SPI_SR register (SPI_I2S_GetFlagStatus()).
799:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - MODF (Mode Fault) flag is cleared by software sequence: a read/write
800:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * operation to SPI_SR register (SPI_I2S_GetFlagStatus()) followed by a
801:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * write operation to SPI_CR1 register (SPI_Cmd() to enable the SPI).
802:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
803:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
804:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG)
805:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
843 .loc 1 805 0
844 .cfi_startproc
845 @ args = 0, pretend = 0, frame = 0
846 @ frame_needed = 0, uses_anonymous_args = 0
847 @ link register save eliminated.
848 .LVL76:
806:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
807:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
808:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_I2S_CLEAR_FLAG(SPI_I2S_FLAG));
809:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
810:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Clear the selected SPI CRC Error (CRCERR) flag */
811:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->SR = (uint16_t)~SPI_I2S_FLAG;
849 .loc 1 811 0
850 0000 C943 mvns r1, r1
851 .LVL77:
852 0002 89B2 uxth r1, r1
853 0004 0181 strh r1, [r0, #8] @ movhi
854 0006 7047 bx lr
855 .cfi_endproc
856 .LFE49:
858 .section .text.SPI_I2S_GetITStatus,"ax",%progbits
859 .align 2
860 .global SPI_I2S_GetITStatus
861 .thumb
862 .thumb_func
864 SPI_I2S_GetITStatus:
865 .LFB50:
812:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
813:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
814:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
815:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Checks whether the specified SPI/I2S interrupt has occurred or not.
816:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
817:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
818:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 2 or 3 in I2S mode
819:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_I2S_IT: specifies the SPI/I2S interrupt source to check.
820:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This parameter can be one of the following values:
821:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_IT_TXE: Transmit buffer empty interrupt.
822:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_IT_RXNE: Receive buffer not empty interrupt.
823:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_I2S_IT_OVR: Overrun interrupt.
824:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_IT_MODF: Mode Fault interrupt.
825:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg SPI_IT_CRCERR: CRC Error interrupt.
826:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @arg I2S_IT_UDR: Underrun Error interrupt.
827:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval The new state of SPI_I2S_IT (SET or RESET).
828:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
829:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT)
830:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
866 .loc 1 830 0
867 .cfi_startproc
868 @ args = 0, pretend = 0, frame = 0
869 @ frame_needed = 0, uses_anonymous_args = 0
870 @ link register save eliminated.
871 .LVL78:
872 0000 10B4 push {r4}
873 .cfi_def_cfa_offset 4
874 .cfi_offset 4, -4
875 .LVL79:
831:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** ITStatus bitstatus = RESET;
832:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t itpos = 0, itmask = 0, enablestatus = 0;
833:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
834:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
835:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
836:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_I2S_GET_IT(SPI_I2S_IT));
837:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
838:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the SPI/I2S IT index */
839:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** itpos = 0x01 << (SPI_I2S_IT & 0x0F);
840:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
841:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the SPI/I2S IT mask */
842:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** itmask = SPI_I2S_IT >> 4;
843:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
844:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Set the IT mask */
845:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** itmask = 0x01 << itmask;
846:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
847:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the SPI_I2S_IT enable bit status */
848:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** enablestatus = (SPIx->CR2 & itmask) ;
876 .loc 1 848 0
877 0002 8388 ldrh r3, [r0, #4]
878 0004 9CB2 uxth r4, r3
879 .LVL80:
849:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
850:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the status of the specified SPI/I2S interrupt */
851:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** if (((SPIx->SR & itpos) != (uint16_t)RESET) && enablestatus)
880 .loc 1 851 0
881 0006 0289 ldrh r2, [r0, #8]
882 0008 92B2 uxth r2, r2
839:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
883 .loc 1 839 0
884 000a 01F00F00 and r0, r1, #15
885 .LVL81:
886 000e 0123 movs r3, #1
887 0010 8340 lsls r3, r3, r0
888 .loc 1 851 0
889 0012 1A42 tst r2, r3
890 0014 07D0 beq .L59
845:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
891 .loc 1 845 0 discriminator 1
892 0016 0909 lsrs r1, r1, #4
893 .LVL82:
894 0018 0123 movs r3, #1
895 001a 8B40 lsls r3, r3, r1
896 .loc 1 851 0 discriminator 1
897 001c 1C42 tst r4, r3
852:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
853:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI_I2S_IT is set */
854:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** bitstatus = SET;
898 .loc 1 854 0 discriminator 1
899 001e 14BF ite ne
900 0020 0120 movne r0, #1
901 0022 0020 moveq r0, #0
902 0024 00E0 b .L58
903 .LVL83:
904 .L59:
855:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
856:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** else
857:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
858:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* SPI_I2S_IT is reset */
859:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** bitstatus = RESET;
905 .loc 1 859 0
906 0026 0020 movs r0, #0
907 .LVL84:
908 .L58:
860:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
861:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Return the SPI_I2S_IT status */
862:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** return bitstatus;
863:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** }
909 .loc 1 863 0
910 0028 5DF8044B ldr r4, [sp], #4
911 .cfi_restore 4
912 .cfi_def_cfa_offset 0
913 .LVL85:
914 002c 7047 bx lr
915 .cfi_endproc
916 .LFE50:
918 002e 00BF .section .text.SPI_I2S_ClearITPendingBit,"ax",%progbits
919 .align 2
920 .global SPI_I2S_ClearITPendingBit
921 .thumb
922 .thumb_func
924 SPI_I2S_ClearITPendingBit:
925 .LFB51:
864:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
865:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /**
866:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @brief Clears the SPIx CRC Error (CRCERR) interrupt pending bit.
867:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPIx: where x can be
868:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - 1, 2 or 3 in SPI mode
869:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @param SPI_I2S_IT: specifies the SPI interrupt pending bit to clear.
870:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * This function clears only CRCERR interrupt pending bit.
871:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @note
872:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - OVR (OverRun Error) interrupt pending bit is cleared by software
873:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * sequence: a read operation to SPI_DR register (SPI_I2S_ReceiveData())
874:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * followed by a read operation to SPI_SR register (SPI_I2S_GetITStatus()).
875:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - UDR (UnderRun Error) interrupt pending bit is cleared by a read
876:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * operation to SPI_SR register (SPI_I2S_GetITStatus()).
877:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * - MODF (Mode Fault) interrupt pending bit is cleared by software sequence:
878:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * a read/write operation to SPI_SR register (SPI_I2S_GetITStatus())
879:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * followed by a write operation to SPI_CR1 register (SPI_Cmd() to enable
880:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * the SPI).
881:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** * @retval None
882:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** */
883:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT)
884:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** {
926 .loc 1 884 0
927 .cfi_startproc
928 @ args = 0, pretend = 0, frame = 0
929 @ frame_needed = 0, uses_anonymous_args = 0
930 @ link register save eliminated.
931 .LVL86:
885:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** uint16_t itpos = 0;
886:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Check the parameters */
887:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_ALL_PERIPH(SPIx));
888:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** assert_param(IS_SPI_I2S_CLEAR_IT(SPI_I2S_IT));
889:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
890:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Get the SPI IT index */
891:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** itpos = 0x01 << (SPI_I2S_IT & 0x0F);
932 .loc 1 891 0
933 0000 01F00F01 and r1, r1, #15
934 .LVL87:
935 0004 0123 movs r3, #1
936 0006 8B40 lsls r3, r3, r1
892:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c ****
893:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** /* Clear the selected SPI CRC Error (CRCERR) interrupt pending bit */
894:./lib/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c **** SPIx->SR = (uint16_t)~itpos;
937 .loc 1 894 0
938 0008 DB43 mvns r3, r3
939 000a 9BB2 uxth r3, r3
940 000c 0381 strh r3, [r0, #8] @ movhi
941 000e 7047 bx lr
942 .cfi_endproc
943 .LFE51:
945 .text
946 .Letext0:
947 .file 2 "c:\\program files (x86)\\gnu tools arm embedded\\4.9 2015q1\\arm-none-eabi\\include\\mach
948 .file 3 "c:\\program files (x86)\\gnu tools arm embedded\\4.9 2015q1\\arm-none-eabi\\include\\stdi
949 .file 4 "./lib/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h"
950 .file 5 "./lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h"
951 .file 6 "./lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h"
952 .file 7 "./lib/CMSIS/CM3/CoreSupport/core_cm3.h"
DEFINED SYMBOLS
*ABS*:00000000 stm32f10x_spi.c
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:19 .text.SPI_I2S_DeInit:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:24 .text.SPI_I2S_DeInit:00000000 SPI_I2S_DeInit
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:92 .text.SPI_I2S_DeInit:00000058 $d
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:99 .text.SPI_Init:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:104 .text.SPI_Init:00000000 SPI_Init
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:163 .text.I2S_Init:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:168 .text.I2S_Init:00000000 I2S_Init
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:306 .text.I2S_Init:000000a4 $d
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:311 .text.SPI_StructInit:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:316 .text.SPI_StructInit:00000000 SPI_StructInit
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:349 .text.I2S_StructInit:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:354 .text.I2S_StructInit:00000000 I2S_StructInit
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:381 .text.SPI_Cmd:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:386 .text.SPI_Cmd:00000000 SPI_Cmd
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:414 .text.I2S_Cmd:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:419 .text.I2S_Cmd:00000000 I2S_Cmd
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:447 .text.SPI_I2S_ITConfig:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:452 .text.SPI_I2S_ITConfig:00000000 SPI_I2S_ITConfig
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:491 .text.SPI_I2S_DMACmd:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:496 .text.SPI_I2S_DMACmd:00000000 SPI_I2S_DMACmd
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:526 .text.SPI_I2S_SendData:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:531 .text.SPI_I2S_SendData:00000000 SPI_I2S_SendData
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:546 .text.SPI_I2S_ReceiveData:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:551 .text.SPI_I2S_ReceiveData:00000000 SPI_I2S_ReceiveData
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:569 .text.SPI_NSSInternalSoftwareConfig:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:574 .text.SPI_NSSInternalSoftwareConfig:00000000 SPI_NSSInternalSoftwareConfig
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:604 .text.SPI_SSOutputCmd:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:609 .text.SPI_SSOutputCmd:00000000 SPI_SSOutputCmd
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:637 .text.SPI_DataSizeConfig:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:642 .text.SPI_DataSizeConfig:00000000 SPI_DataSizeConfig
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:667 .text.SPI_TransmitCRC:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:672 .text.SPI_TransmitCRC:00000000 SPI_TransmitCRC
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:690 .text.SPI_CalculateCRC:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:695 .text.SPI_CalculateCRC:00000000 SPI_CalculateCRC
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:723 .text.SPI_GetCRC:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:728 .text.SPI_GetCRC:00000000 SPI_GetCRC
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:752 .text.SPI_GetCRCPolynomial:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:757 .text.SPI_GetCRCPolynomial:00000000 SPI_GetCRCPolynomial
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:775 .text.SPI_BiDirectionalLineConfig:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:780 .text.SPI_BiDirectionalLineConfig:00000000 SPI_BiDirectionalLineConfig
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:809 .text.SPI_I2S_GetFlagStatus:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:814 .text.SPI_I2S_GetFlagStatus:00000000 SPI_I2S_GetFlagStatus
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:836 .text.SPI_I2S_ClearFlag:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:841 .text.SPI_I2S_ClearFlag:00000000 SPI_I2S_ClearFlag
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:859 .text.SPI_I2S_GetITStatus:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:864 .text.SPI_I2S_GetITStatus:00000000 SPI_I2S_GetITStatus
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:919 .text.SPI_I2S_ClearITPendingBit:00000000 $t
C:\Users\lwngim1\AppData\Local\Temp\ccKxFG03.s:924 .text.SPI_I2S_ClearITPendingBit:00000000 SPI_I2S_ClearITPendingBit
.debug_frame:00000010 $d
UNDEFINED SYMBOLS
RCC_APB2PeriphResetCmd
RCC_APB1PeriphResetCmd
RCC_GetClocksFreq